ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
4 декабря
96993 Топик полностью
ReAl (15.08.2007 12:40, просмотров: 267) ответил ReAl на Странно... Вроде бы ограничений на использование sizeof в препроцессоре нет (собственно, тогда и ругань должна была бы быть другая), непонятно, почему так.
Ещё раз пробежался глазами по стандарту - в #if/#elif должны стоять constant-expression, других ограничений нет, само constant-expression может содержать sizeof, если его результат - константа... Т.е. прямого запрета нет. Но когда-то давно я тоже нарывался на то, что какой-то компилятор отказался принять sizeof() в препроцессоре. Помнится, даже, в обсуждении кто-то высказал мысль, что препроцесор только для текстовых подстановок и простых действий с числами (в том числе им же подставленными) и про типы данных ничего знять не обязан. Но тогда компилятор явно выругался - недопустимый оператор для препроцессора или что-то в этом духе. Да и сейчас, см. выше, стандартом допускается constant-expression, а в нём допускается sizeof Впрочем, я уже и не помню - когда в последний раз sizeof в препроцессоре использовал.