如何抑制C语言中未使用变量的编译器警告?

Rez*_*ani 5 c embedded compiler-warnings

对于嵌入式系统中的外围设备要求,我必须声明一个变量以读取寄存器,但是以后将不再使用该值。因此,我自然会得到关于未使用变量的编译器警告。如何抑制警告?我有两种想法:

  1. 使用编译器指令,我会犹豫,因为它们与编译器相关
  2. 添加从变量读取的虚拟数据,例如:

    volatile int var;
    
    var = peripheral_register;
    
    var = var;
    
    Run Code Online (Sandbox Code Playgroud)

你有更好的主意吗?

Cli*_*ord 6

如果您只需要读取寄存器(例如清除一些状态标志),则根本不需要接收变量:

(void)peripheral_register ;
Run Code Online (Sandbox Code Playgroud)

假设寄存器本身被声明为易失性就足够了,因此必须对其进行读取。

否则,您可以var通过外部链接使虚拟对象成为全局对象-这样,编译器无法确定未在其他位置读取它;但这是一个丑陋得多的解决方案。