warning: #231-D: declaration is not visible outside of function

阅读 70

2022-01-26

warning: #231-D: declaration is not visible outside of function

导致出现这个警告的情况有两个:

  1. 在头文件中声明函数时。引用了头文件不知道的数据类型
  2. 头文件相互包含,导致链接编译出现问题
对于情况1,具体原因是因为在.c文件中引用了头文件,.c中结构体等都可以正常使用,但是.h中对该结构体无法找到,导致的警告

解决方法:
原则上.c文件应该只包含其自身的.h文件,所有的引用都在.h文件中进行,即可避免.c文件引用而.h文件没有引用的情况;

对于情况2,具体原因为多个头文件之间相互包含反复引用,或引用的层数过深,特别是出现两个文件相互引用的情况时,会很容易出现编译问题

解决方法:
避免头文件的混乱引用,所有文件应当有层次的引用,对于一些公用的结构体及变量,应建立单独的.c.h统一声明管理,不要用到那个文件的变量就去引用那个文件

精彩评论(0)

0 0 举报