我正在尝试定义一个宏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吗?
答案 0 :(得分:3)
character \
告诉预处理器当前行在下一行继续。在您的情况下,最后一行if ( __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