Автор: гость
интересно, чем вам не угодил этот оптимизирующий ассемблер?
|
|
Вот пример, который компилятор C глотает и не сообщает об ошибке.
Якобы это имеет какой-то смысл:
" if (n = 1) anysing_do;"
Правильным будет такая фраза:
" if (n == 1) anysing_do;"
Дальше, вот пример синтасической нелепости:
" if (n == 1) anysing_do1; else anysing_do2" - простая фраза и здесь логическим разделителем является ";"
В алголоподобных языках таким разделителем является "else".
И если надо сделать больше, чем одно действие, то фраза будет такой:
" if (n == 1)
{
anysing_do1";
anysing_do2";
} else anysing_do3;
"
Заметьте в этом случае разделитель - скобка "}" и перед else не надо ствить ";"
Ну как это? ТО разделитель одно, то другое...
А теперь еще фокус!
Я объявил макрос:
#define macros {cbi(PORTB, PB6);} // установить порт PB6 в ноль например...
Теперь, если этот макрос будет участвовать в простой конструкции фразы с else
разделитель ";" опять не нужен:
if (n == 1) macros else n = 0;
Логика есть в этих правилах? Их просто надо запомнить, логики в этом синтаксе нет и разделитель вносит
путаницу, особенно если вы одновременно работаете на C и на Delphi.
Что касается php и javascript для web-приложений, то эта синтаксическая хромота передается всем потомкам.
Пардон, если кого-то утомил... Для меня подобная ахинея является фактором повседневнего раздражения в работе.