warning: extra tokens at end of #ifdef directive 101 | #ifdef USE_ASYNC_TASK && ...
🚨 错误信息
warning: extra tokens at end of #ifdef directive
101 | #ifdef USE_ASYNC_TASK && (USE_ASYNC_TASK == TRUE)
🤖 AI解决方案
warning: extra tokens at end of #ifdef directive
101 | #ifdef USE_ASYNC_TASK && (USE_ASYNC_TASK == TRUE)
警告:#ifdef 指令末尾有多余的标记
原因分析
#ifdef 指令只能判断一个宏是否被定义,不能进行逻辑判断(如 &&)。
解决方案
使用 #if 指令代替 #ifdef 来进行宏的条件判断。
#if defined(USE_ASYNC_TASK) && (USE_ASYNC_TASK == TRUE)
// Your code here
#endif
或者,如果只是想判断 USE_ASYNC_TASK 是否被定义,并且其值为 TRUE:
#if USE_ASYNC_TASK == TRUE
// Your code here
#endif
预防措施
- 在包含条件编译的头文件或源文件前,仔细检查
#ifdef、#ifndef、#if、#else、#elif、#endif的用法是否正确。 - 对于需要进行逻辑运算的宏判断,始终使用
#if指令。