军事研究员 2024-11-19 11:44 采纳率: 98.6%
浏览 104
已结题

C语言编译报错: error: extra tokens at end of #ifndef directive [-Werror]

C语言编译报错: error: extra tokens at end of #ifndef directive [-Werror]

img

这些错误信息表明在编译过程中,编译器遇到了带有额外标记的 #ifndef 指令。#ifndef 指令用于防止头文件内容被重复包含,通常格式为 #ifndef MACRO_NAME,后面应该紧跟宏定义的名称,不应该包含其他字符或标记。

错误信息中的 extra tokens at end of #ifndef directive 表示 #ifndef 指令后面有额外的标记。在你提供的代码中,DBG_ENTRY(fmt, args...)DBG_DEBUG(fmt, args...) 等宏定义后面包含了额外的标记 (fmt, args...),这不符合预处理指令的语法。

要解决这个问题,你需要修改 module_spi.h 文件中的宏定义,确保 #ifndef 后面直接跟着宏定义的名称,不要包含任何参数。例如:

#ifndef DBG_ENTRY
#define DBG_ENTRY(fmt, args...) // 宏定义内容
#endif

#ifndef DBG_DEBUG
#define DBG_DEBUG(fmt, args...) // 宏定义内容
#endif

// 以此类推,对其他宏定义进行相同的修改

确保每个宏定义的 #ifndef 指令后面只有宏名称,没有其他字符或参数。这样修改后,应该可以解决编译错误。

  • 写回答

1条回答 默认 最新

  • 嵌入式小企鹅 2024-11-19 14:03
    关注
    
    #ifndef DBG_ENTRY
    #define DBG_ENTRY(fmt, args...) // 宏定义内容
    #endif
     
    #ifndef DBG_DEBUG
    #define DBG_DEBUG(fmt, args...) // 宏定义内容
    #endif
     
    // 以此类推,对其他宏定义进行相同的修改
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 11月19日