我正在删除一堆使用在头文件中声明的变量的 C 代码。无论出于何种原因,我的编译器都不会警告头文件中未使用的变量。从头文件中调用未使用变量的选项是什么。不过,它是从 C 文件中完成的。
最佳答案
首先,编译器甚至不知道变量是在头文件中声明还是在 .c 文件中声明 - 在预处理器运行后,这是无法区分的。
通常在头文件中声明的是外部引用,即存储类external
的变量。如果这样的变量未使用,我知道没有编译器会发出警告 - 许多系统头文件都声明了这样的变量,如果它声明了,你会被警告淹没(errno
或 stderr
是著名的示例 - 您不希望收到任何不使用 errno
或 stderr
的源文件的警告)
编译器可以针对未使用的 static
变量和未使用的函数参数发出警告。此类变量的使用和范围仅限于当前编译单元或函数,并且“没有其他人可能使用它们”,因此发出警告是有意义的。 extern
变量可以很好地被其他目标文件使用,对于那些编译器将无法发出警告 - 一个合适的链接器,但是会意识到任何目标文件都没有使用外部符号并从最终可执行文件中静默删除该变量 - 不需要警告,因为它可以由编译系统修复。
关于c - 如何从头文件中获取未使用的变量警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707457/