明明我在头文件写了宏定义,为啥还提示未找到use of undeclared identifier

1、今天调试代码报错如下:

board.c:68:58: error: use of undeclared identifier 'NUMBER_OF_INTERFACES'
INTERFACESControlStruct INTERFACESControl[ NUMBER_OF_INTERFACES ]={0};

一直提示NUMBER_OF_INTERFACES宏未定义,我找这个错误找了好久,可明明我在头文件已经包定义了

        #define NUMBER_OF_INTERFACES 2

2、经百度常见的原因如下:

这个错误提示表明在你的代码中使用了未声明的标识符 NUMBER_OF_INTERFACES 。出现这种情况的原因可能有以下几种情况:

1、头文件没有被正确包含:

        确保在board.c文件中包含了包含NUMBER_OF_INTERFACES定义的头文件。在C语言中,你需要使用#include指令来包含需要使用的头文件。
 

        #include "header_file.h" // 假设NUMBER_OF_INTERFACES在header_file.h中定义


2、头文件路径不正确

        确保头文件的路径正确,并且编译器能够找到它。如果头文件在不同的目录下,你可能需要在#include指令中使用正确的路径。

3、宏定义没有正确展开

        在代码中直接使用NUMBER_OF_INTERFACES作为数组的长度,但是没有加上中括号[],因此编译器无法正确展开宏。修改代码如下:


INTERFACESControlStruct VMACControl[ NUMBER_OF_INTERFACES ];


4、宏定义的作用域问题

        如果NUMBER_OF_INTERFACES是在一个特定的作用域内定义的(例如函数内部),那么在外部作用域中可能无法访问该宏。请确保宏定义的作用域正确,或者在需要使用该宏的地方重新定义它。
 

 可是我已经定义在头文件了,而且c文件已经包含了头文件

所以,问题在哪里找了好久。

3、最后排查,发现c文件中定义了

这个只能在头文件定义的,所以重复了,头文件的宏就会未被使能:

所以原因是,从头文件.h拷贝东西到源文件.c时,一定要注意,不要把头文件的宏定义拷贝过来了

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值