【发布时间】:2016-08-01 20:22:27
【问题描述】:
我正在删除使用在头文件中声明的变量的一堆 C 代码。无论出于何种原因,我的编译器都不会警告头文件中未使用的变量。从头文件调用未使用变量的选项是什么。它是从 C 文件中完成的。
【问题讨论】:
-
您不会得到这些,因为其他 C 文件可能包含标头并使用变量。如果你想得到那些你必须暂时将它们移动到一个 C 文件中。
-
在头文件中定义变量通常被认为是不好的做法 - 您可以声明它,但不应该定义它。如果它只是在此处声明且未使用,则编译器通常不会发出警告(它只是不做任何事情,但没有成本)。你确定你真的在那里定义变量吗?你能举一些例子吗?
-
除非编译器可以看到所有包含
foo.h的源文件,否则它无法知道foo.h声明的对象是否未被使用。听起来像是链接器的工作。 -
@chux 编译器甚至不知道它正在处理 header - 在预处理阶段之后,编译器甚至无法区分来自标头的变量和来自 .c 的变量文件。这个问题有问题。
-
@Kitcha 那么变量是在头文件中声明还是在主 .c 文件中声明没有区别 - 当变量声明和未使用时,编译器不会发出警告 - 与已定义和未使用相反
标签: c linux gcc gcc-warning