Я часто использую do-while (0) конструкцию в своих #defines по причинам, описанным в в этом ответе. Также я пытаюсь использовать как можно более высокий уровень предупреждения от компилятора, чтобы уловить больше потенциальных проблем и сделать мой код более надежным и кросс-платформенным. Поэтому я обычно использую -Wall
с gcc и /Wall
с MSVC.
К сожалению, MSVC жалуется на конструкцию do-while (0):
foo.c(36) : warning C4127: conditional expression is constant
Что мне делать с этим предупреждением?
Просто отключите его глобально для всех файлов? Для меня это не кажется хорошей идеей.