etybaxe
-
Постов
34 -
Зарегистрирован
-
Посещение
Никогда
Сообщения, опубликованные etybaxe
-
-
Byte писал(а) Сбт, 10 Июня 2006 00:57 А, по моему, зря вы так, господа, на венгерскую нотацию наезжаете... идея хорошая, вот только не совсем удобно, порой, реализована...
а по поводу а, b, c... и т.д. позволю себе не согласиться, - не так уж удобно разбирать даже свои старые тексты когда в функции вместо strTmp стоит какая-нить s...
обычно следуют классической нотации a, b, c / x, y, z / v, u для коротко-живущих скалярных, p и q для байтовых, s для строк, t для временных переменных, а r для конечно результата, при этом коментируем все непонятные переменные.
-
в принципе смысл разрешить такой доступ есть, в редких случаях его можно эффективно использовать - должно скомпилироваться, к тому же метод класса это не код, а всего лишь его адресс, так что если ошибка и произойдет то на этапе компиляции ptrf gimmi() возвращающей поинтер на приватный метод класса.
-
EvilShadow писал(а) Птн, 09 Июня 2006 22:21 Почему? Время парсинга не обязательно определяется количеством строк кода.
это зависит скорей от компилятора, но C в он может довольно быстро разобрать, в моем примере компилятор:
1) читает все выражение до терминатора ';'
2) разбитвает на блоки
3) сразу выделяет h как переменную просто читая до &&
4) идет идет вглубь скобок определяя контент как поинтер
5) к которому прибавляется mips_non_lazy_relocs
6) + константа true
это все очень простой парсинг, с парой локапов в хэш тейбл, в Си коде тоже будет в 6 строк.
в варианте gnu, ему придется поднятся обратно до более выскокой функции парсинга кондиционалов, и на несколько вызовов суб-функции парсера выражений и локапов в хэш тейбл больше; хотя все зависит от дизайна компилятора =/
ну а оптимизатор разумеется от этого быстрее работать не станет, разве что мы все кондиционалы на goto заменим =)
EvilShadow писал(а) Птн, 09 Июня 2006 22:21 Я переношу Затем, что мне так нравится. Для симметрии
красота но не всегда облегчает понимание кодеры ядра Linux по этому даже статью написали, но это как спор между Big Endian и Little Endian - первый более красивый, второй более практичный... так что постоянно вспоминаем Свифта
EvilShadow писал(а) Птн, 09 Июня 2006 22:21 Хм... я такого не видел, но если такое есть - это бред, конечно Причем исключительно в этом контексте, в других случаях именно a и b - это зло.
для глобальных длинные имена ok, а внутри функции обычно не нужно больше 3-х переменных x, y, z. в C++ глобальных вообще не должно быть, посему все имена короткие.
EvilShadow писал(а) Птн, 09 Июня 2006 22:21 Стиль унифицируется для возможности поддержки продукта большим количеством людей и совместной разработки. Для этих же целей часто не используются многие возможности Си - красивую и эффективную формулу порою очень непросто понять...
Стиль же Микрософта - это мой ночной кошмар, не надо на ночь вспоминать
в микрософт тоже унифицировали и получились переменные с красивыми названиями mpdwsNumberOfInstances (потренируйтесь в быстром написании ), что расшифровывается как "member private dword static", хотя я сам использую префикс m для данных класса, но не более, ибо даже это лишне при отсутствии глобальных переменных, и макро, а NumberOfInstances можно записать как ninst, и поставить в декларации коментарий, посему в C++ префиксы ненужны вообще.
-
Byte писал(а) Птн, 09 Июня 2006 18:31 а вы уверены, что при такой записи бинарный получится компактнее и производительнее? что удобнее писать не всегда удобнее компилировать...
уменьшится время парсинга и первоначального и разбора на базовые составляющие, да и читать будет проще: одна мысль - одна строка.
еще иногда переносят '{' на новую строку после кондиционалов; зачем это, ведь for/if/while открывают кондиционал, и скобка тут сама по себе не имеет отдельного смысла.
так-же часто используются веселые названия локальных переменных, вроде left_operand, right_operand вместо a и b.
imho стиль gnu, как и тот, что принят микрософтом, это то как делат не стоить.
-
вроде как после релиза сорсов civilization call to power, она ныне успешно компилится под Linux, но все равно понадобится диск с оригинальным дистрибьютивом.
тоже и с homeworld.
http://www.thereisnospork.com/projects/homeworld/
Heroes 5 отлично идут на некоторых версиях wine, хотя без шейдеров =(
-
может быть и глупый вопрос но все-же:
после ночи копания в сорсах binutils и gcc, от местного стиля несколько поехала кругом голова, ну зачем писать:
if(h) { struct elf_mips_link_hash_entry *hmips; hmips = (struct elf_mips_link_hash_entry*)h; hmips->mips_non_lazy_relocs = true; }
когда можно просто
h && ((struct elf_mips_link_hash_entry*)h)->mips_non_lazy_relocs = true;
????
причем весь код в такой веселой радости, наверное если ее убрать, то все скомпилится раза вдва быстрей.
но больше всего радуют получающиеся в результате лаконичные функции, вроде mips_elf_relocate_section по 60! страниц кода, где вложенность кондиционалов и свитчей уходит в бесконечность.... причем в среднем исходнике их набито под 500 килобайт - маленький такой сорсик
или возможно в таком стиле есть что-то хорошее? вроде как иногда поощеряется большое количество строк в исходнике, и очень осмысленные коментарии вроде:
/********************************* * * * main() function * * ***************************************/ main() /* ... */
-
из старых и мною любимых есть: родные 3-и Герои, Железнодорожный Тикун, и Альфа Центаури, + аддоны к ней. далее очень надеюсь что удастся запустить 5-е герои по их выходу, если нет то наверное сам сяду за дебаггер и буду их ломать
через WINE запускается большая часть известных мне игр, кроме самых новых, а через DOSBox практически все старые.
-
пожалуй не буду создавать новую тему, и задам свой скромный вопрос здесь.
на машине два линка: ppp0 и ppp1, требуется что бы все соединения с портом назначения $port использовали ppp0, а все остальные ppp1.
ppp1 является у меня default в main таблице:
Цитата: ip r a default nexthop dev ppp1
пробовал цель ROUTE iptables - не помогает:
Цитата: iptables -t mangle -A POSTROUTING -o ppp1 -p tcp --dport $port -j ROUTE --oif ppp0
iptables -t mangle -A PREROUTING -i ppp1 -p tcp --sport $port -j ROUTE --iif ppp0
подскажите, пожалуйста, что я делаю не так, и как это реализовать?
зараннее спасибо!
Задачка
в Программирование: C / C++
Опубликовано
а где здесь непосредственный доступ к private-функции класса?
именно что нигде, а зная оффсет и объект, функцию может вызвать любой, и зависнуть ничего не может.