我正在尝试定义一个宏 GCC_447_OR_LESS
(如下),我可以用它来检查而不是使用又大又丑的宏
#ifdef __linux__
// Test for GCC 4.4.7 or less
#if __GNUC__ < 4 || \
__GNUC__ == 4 && ( __GNUC_MINOR__ < 4 || \
( __GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ <= 7 ) ) \
#define GCC_447_OR_LESS
#endif
#endif
但是我得到了错误
error: missing binary operator before token "#"
#define GCC_447_OR_LESS
^
我无法解释发生了什么。不能像我那样在#if 中使用#define 吗?
最佳答案
character \
告诉预处理器当前行在下一行继续。在您的情况下,最后一行 ( __GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ <= 7 ) ) \
将定义添加到 #if健康)状况。
#define
是 true
的一部分块,不得包含在 #if
中行
固定代码是:
#ifdef __linux__
// Test for GCC 4.4.7 or less
#if __GNUC__ < 4 || \
__GNUC__ == 4 && ( __GNUC_MINOR__ < 4 || \
( __GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ <= 7 ) ) /**/
#define GCC_447_OR_LESS
#endif
#endif
关于c++ - 当#define 在 #if 中时, token "#"错误之前缺少二元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983612/