忽略c中代码块中未使用的变量

Ignore unused variables in a block of code in c

我有一个很大的 C 代码库,其中一部分是从 Oracle Pro*C 预编译器生成的代码。

我们使用 GNU gcc 编译器。

Pro*C 预编译器生成的代码包含未使用的变量,这些变量会发出许多与 -Wunused-variable 相关的警告,我想忽略这些警告。

我尝试了以下我在其他问题中发现的方法,但它不适用于 C 代码(缩减为最小示例)。

 int main(void)
 {
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-variable"
         int  a=0;
 #pragma GCC diagnostic pop
         int b=0;
         return 0;
 }

我仍然收到变量 a-Wunused-variable 错误。

 aa.c: In function 'main':
 aa.c:8:13: warning: unused variable 'b' [-Wunused-variable]
          int b=0;
              ^
 aa.c:6:14: warning: unused variable 'a' [-Wunused-variable]
          int  a=0;
               ^

GCC 命令:

gcc-8 -Wall -Wextra -pedantic aa.c -o a

如果您想知道,如果我删除 pop 编译指示,则不会发出任何警告。

我找到的解决方案是在生成的有问题的变量之前添加__attribute__((unused))。在这种情况下,总是只有 4 个相关变量,所以这是可能的。

我在 Pro*C 预编译器之后的 make 文件中写了一个 bash 命令:

for var in varA varB varC varD; do sed -i "0,/${var}/{s/\(${var}\)/__attribute__((unused))/}" $file_name; done

希望对大家有所帮助。