c++ - 在 C/C++ 中实现 UNUSED 宏的通用编译器独立方式

标签 c++ c macros compiler-warnings

在实现 stub 等时,您希望避免“未使用的变量”警告。多年来,我遇到了一些 UNUSED() 宏的替代方案,但从来没有一种被证明适用于“所有”编译器,也没有一种按照标准是密封的。

或者我们是否坚持使用每个构建平台的 #ifdef block ?

编辑:由于有许多不符合 c 的替代方案的答案,我想澄清一下,我正在寻找一个对 C 和 C++ 都有效的定义,所有风格等等

最佳答案

根据this answeruser GMan 典型的方式是转换成void:

#define UNUSED(x) (void)(x)

但是如果 x 被标记为 volatile 这将强制从变量中读取并因此产生副作用,因此几乎可以保证无操作和抑制编译器警告如下:

// use expression as sub-expression,
// then make type of full expression int, discard result
#define UNUSED(x) (void)(sizeof((x), 0))

关于c++ - 在 C/C++ 中实现 UNUSED 宏的通用编译器独立方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4851075/

相关文章:

c++ - `back_emplacer` 实现 : default operator= vs universal reference version?

c++ - 两个 Eigen::VectorXd 的高效(非标准)连接

c - 是否可以使用 for 循环更改 C 中的变量名?

c - Backtrace 指向 fopen 崩溃

c++ - C2400 内联汇编语法错误,对比 2015

c++ - Tensorflow如何定义预处理器宏?

c++ - 直接初始化与直接列表初始化 (C++)

C 编程 - 用于处理多维数组的函数中的指针

c - 宏如何输出双引号

c++ - 来自函数签名的 const 函数签名