Re[3]: VC++ 7.0 -проблемы с компиляцией стандартного Си кода
От: elcste  
Дата: 27.12.06 05:31
Оценка:
Здравствуйте, morning_wind, Вы писали:

_>как выяснилось, это баг препроцессора.

_>у меня в вызове SETCODE первый аргумент макроса пустой,а препроцессор подставляет вместо него второй аргумент.смещает и другие аргументы.

Но только это ошибка в коде, а не в препроцессоре. Как первый стандарт C, так и стандарт C++, запрещает пустые аргументы макроса.

ISO/IEC 9899:1990, 6.8.3; ISO/IEC 14882:2003, 16.3/4:

The number of arguments in an invocation of a function-like macro shall agree with the number of parameters in the macro definition, and there shall exist a ) preprocessing token that terminates the invocation.


Их поддержка появилась только в новом стандарте C 1999 года.

ISO/IEC 9899:1999, 6.10.3/4:

If the identifier-list in the macro definition does not end with an ellipsis, the number of arguments (including those arguments consisting of no preprocessing tokens) in an invocation of a function-like macro shall equal the number of parameters in the macro definition.


Но MSVC C99 не поддерживает до сих пор.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.