LINUX.ORG.RU
Ответ на: комментарий от drBatty

это на ваше усмотрение, реальность как никак.

qulinxao ★★☆
()
Ответ на: комментарий от wota

Те, кто пишет операторы не обрамляя пробелами, заслуживают распечатывания стека. Поэтому вариант tailgunner-а лучше, т.к. неграмотные сикодеры будут страдать, а это всегда хорошо.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

А зачем там всё таки do-while? Почему не просто printf(...) без всяких фигурных скобочек?

Потому что в вопросе были фигурные скобки (и как показало время, они нужны).

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

причина «do {...} while(0)» в макросах:

#define showme(x) \
do {           \
   printf(" " #x " = %d", x); \
} while (0)

if(...)
  showme(a);
else
  showme(b);

anonymous
()

## - make literal. Всё остальное костыли.

ziemin ★★
()
Ответ на: комментарий от Reinar

Какая то странная атака получается. На сколько я знаю, макрос заменяется препроцессором, поэтому в коде после препроцессора будет: printf(«bla = %d», x); те строка будет подставлена как есть, отсюда и вывод, что ваша атака требует изменения исходников программы, тк из вне изменить этот параметр невозможно.

pulo
()
Ответ на: комментарий от pulo

Согласен, с атакой я тут погорячился (строка сформируется на этапе компиляции) - но всё-таки конструкции вида a%s будут обрабатываться неправильно.

Reinar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.