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

标签 c oracle gcc pragma unused-variables

我有一个很大的 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))\1/}" $file_name; done

希望它对某人有帮助。

关于c - 忽略c中代码块中未使用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825846/

相关文章:

c - 反转C中整数的位

C fwrite() 不会保存文件中的所有数据

sql - 如何确定 oracle 数据库是否设置为自动提交?

C:程序要求用户输入,即使输入文件作为参数给出

c - 在字符串中查找空格和字母数字字符

.net - 使用带有 C# 的 Dapper 以 refcursor 作为输出参数调用 Oracle 存储过程时出现问题,但是 refcursor 作为返回值有效

mysql - sql : combining 2 query to give 1 resultset

gcc - GCC 4.5 : “checking whether the C compiler works… no” error when CFLAGS =“-arch x86_64”

c - 用GCC编译的C语言泰勒级数计算程序

python - 安装 Ta-lib 会产生 gcc 错误