我将两个变量声明为:
char vowels[5] = {'a', 'e', 'i', 'o', 'u'};
char nStrings[2][4] = { {'a', 'c', 'p', 'x'}, {'b', 'd', 'q', 'y'} };
并用它们与
ìf
陈述进行比较,因此,从我的角度来看,它们正在被使用。初始值不会被覆盖,没有变化。
使用
-Wall
标志编译代码时,会触发一些关于[-Wunused-variable]
的警告
gcc -g -Wall -c main.c -o main.o
main.c: In function ‘main’:
main.c:26:10: warning: unused variable ‘nStrings’ [-Wunused-variable]
26 | char nStrings[2][4] = { {'a', 'c', 'p', 'x'}, {'b', 'd', 'q', 'y'} };
| ^~~~~~~~~~~~~~
main.c:25:10: warning: unused variable ‘vowels’ [-Wunused-variable]
25 | char vowels[5] = {'a', 'e', 'i', 'o', 'u'};
| ^~~~~~
gcc -g -Wall main.o -o main
在寻找未使用的变量的同时,是否有替代方案来防止这些“假”阳性触发因素?
我试着用
const
像一样声明它们
const char nStrings[2][4] = { {'a', 'c', 'p', 'x'}, {'b', 'd', 'q', 'y'} };
但这只是触发了另一个警告
warning: ‘nStrings’ defined but not used [-Wunused-const-variable=]
另一个警告仍然存在。
我知道
[-Wno-unused-variable]
标志存在,但使用它会错过真正根本没有被使用的变量。
唯一的选择就是忽略它?
你可以使用 GCC 的 unused 属性:
unused — 此属性附加到变量或结构字段, 表示变量或字段可能未被使用。海湾合作委员会 不会为此变量或字段产生警告。
__attribute__((unused))
如果您的编译器支持,还有一个替代方案:
[[maybe_unused]] /* C2X*/