warning: extra tokens at end of #ifdef directive 101 | #ifdef USE_ASYNC_TASK && ...

2025年09月21日 14:03 响应: 2.18秒 状态: success

🚨 错误信息

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 指令。