Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
忽略c代码块中未使用的变量_C_Oracle_Gcc_Pragma_Unused Variables - Fatal编程技术网

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

忽略c代码块中未使用的变量,c,oracle,gcc,pragma,unused-variables,C,Oracle,Gcc,Pragma,Unused Variables,我有一个很大的C代码库,其中一部分是从Oracle Pro*C预编译器生成的代码 我们使用GNUGCC编译器 Pro*C预编译器生成的代码包含未使用的变量,这些变量会发出许多与-Wunused variable相关的警告,我希望忽略这些警告 我在其他问题中发现,我尝试了以下方法,但对于C代码不起作用(简化为一个最小的示例) 对于变量a,我仍然得到-Wunused变量错误 aa.c: In function 'main': aa.c:8:13: warning: unused variable

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

我们使用GNUGCC编译器

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

我在其他问题中发现,我尝试了以下方法,但对于C代码不起作用(简化为一个最小的示例)

对于变量
a
,我仍然得到
-Wunused变量
错误

 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
pragma,则不会发出警告。

我找到的解决方案是在生成的有问题的变量之前添加
\uuuuu属性((未使用))
。在这种情况下,始终只有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

希望它能对某些人有所帮助。

这是因为警告只有在定义完块后才能生成。因此,一个可能的解决方案可能是使用
{}
将包含不需要警告的未使用变量的代码封装在它们自己的块中
但最好清理代码。@SimonW您正试图在代码中添加pragmas,因此我假设您拥有控制权……虽然这不可能产生短期解决方案,但我敦促您向Pro*C人员投诉。生成这样的代码会产生明显的警告,这是非常不负责任的。希望您的代码在编译时不出现警告(就像您所做的那样)并不是什么童话故事,这是一种常见且推荐的行业实践。也许您可以重构代码,使所有Pro*C都在专用函数中,然后在整个部分禁用该警告
for var in varA varB varC varD; do sed -i "0,/${var}/{s/\(${var}\)/__attribute__((unused))\1/}" $file_name; done