фатальная ошибка C1017: недопустимое целочисленное постоянное выражение при использовании " #if (false)"
имеют следующий код, который работает под Linux, но дает ошибку для MSVS
#if (false)
....
#endif
ошибка: фатальная ошибка C1017: недопустимое целочисленное постоянное выражение
Я нашел этот отчет в интернете Microsoft: http://msdn.microsoft.com/en-us/library/h5sh3k99.aspx
в то время как описанная информация немного отличается от моего случая, поскольку я не использовал "#define"
Итак, мой вопрос:
- Is есть ли способ заставить его работать для MSVC без изменения кода ?
- если код должен быть обновлен, какое лучшее решение для такого случая?
2 ответов
похоже, что ваша версия компилятора MS не поддерживает false как встроенную константу. Это не удивительно, потому что Microsoft имеет пятнистую запись поддержки стандартов для C и c++.
один из способов сделать эту работу без изменения кода-передать параметры командной строки компилятору, чтобы определить false как 0 и true как 1:
-Dfalse=0 -Dtrue=1
есть ли способ заставить его работать для MSVC без изменения кода ?
не совсем так. Определение макроса для false
запрещено стандартом по уважительным причинам, [макро.названия]/2:
переводческая единица не должна
#define
или#undef
имена лексически идентичные ключевым словам, идентификаторам, перечисленным в таблице 3, или описанную в 7.6.
и я не вижу других путь.
если код должен быть обновлен, какое лучшее решение для такого рода кейс?
заменить 0
на false
.