sha*_*kin 16 c c++ macros compiler-warnings
在实现存根等时,您希望避免使用"未使用的变量"警告.多年来,我遇到过UNUSED()宏的一些替代方案,但从来没有一个被证明适用于"所有"编译器,或者标准是气密的.
或者我们为每个构建平台坚持使用#ifdef块?
编辑:由于非c兼容替代品的许多答案,我想澄清我正在寻找一个对C和C++,所有口味等都有效的定义.
sha*_*oth 32
#define UNUSED(x) (void)(x)
Run Code Online (Sandbox Code Playgroud)
但是如果x被标记为volatile会强制从变量读取并因此产生副作用,那么几乎保证无操作并抑制编译器警告的实际方法如下:
// use expression as sub-expression,
// then make type of full expression int, discard result
#define UNUSED(x) (void)(sizeof((x), 0))
Run Code Online (Sandbox Code Playgroud)