在 gcc 编译器上使用“-Wall”标志时是否可以挑选变量以避免 [-Wunused-variable] 的“错误”正面警告?

问题描述 投票:0回答:1

我将两个变量声明为:

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]
标志存在,但使用它会错过真正根本没有被使用的变量。

唯一的选择就是忽略它?

c gcc gcc-warning
1个回答
0
投票

你可以使用 GCC 的 unused 属性:

unused — 此属性附加到变量或结构字段, 表示变量或字段可能未被使用。海湾合作委员会 不会为此变量或字段产生警告。

__attribute__((unused))

如果您的编译器支持,还有一个替代方案:

[[maybe_unused]] /* C2X*/
© www.soinside.com 2019 - 2024. All rights reserved.