c - 如何从头文件中获取未使用的变量警告?

标签 c linux gcc gcc-warning

我正在删除一堆使用在头文件中声明的变量的 C 代码。无论出于何种原因,我的编译器都不会警告头文件中未使用的变量。从头文件中调用未使用变量的选项是什么。不过,它是从 C 文件中完成的。

最佳答案

首先,编译器甚至不知道变量是在头文件中声明还是在 .c 文件中声明 - 在预处理器运行后,这是无法区分的。

通常在头文件中声明的是外部引用,即存储类external的变量。如果这样的变量未使用,我知道没有编译器会发出警告 - 许多系统头文件都声明了这样的变量,如果它声明了,你会被警告淹没(errnostderr 是著名的示例 - 您不希望收到任何不使用 errnostderr 的源文件的警告)

编译器可以针对未使用的 static 变量和未使用的函数参数发出警告。此类变量的使用和范围仅限于当前编译单元或函数,并且“没有其他人可能使用它们”,因此发出警告是有意义的。 extern 变量可以很好地被其他目标文件使用,对于那些编译器将无法发出警告 - 一个合适的链接器,但是会意识到任何目标文件都没有使用外部符号并从最终可执行文件中静默删除该变量 - 不需要警告,因为它可以由编译系统修复。

关于c - 如何从头文件中获取未使用的变量警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707457/

相关文章:

linux - 连接树莓派时ssh错误文件号

c++ - gcc -O2 小于 gcc -O2 -g 后跟 strip --strip-all

c++ - MSVC 错误 - 错误 C2373 : 'description' : redefinition; different type modifiers

c - 程序仅在声明虚拟字符数组时有效 [C]

c++ - 构建在 VS 2013 中找不到平台工具集 = 'v141'

无法将所有 8 个字节放入 unsigned long long

linux - 为什么我无法使用静态 ip ping 到任何地址?

java - 使用控制组管理 Java 进程

c - 在 C 中使用嵌套函数

c - 如何重现 __builtin___memset_chk