c - 将语句表达式标记为可能未使用

标签 c gcc clang

如何标记 statement expression ,即

({struct Value * t = expr; set(t,val); t;})

可能未使用,即

__attribute__((unused))

它是自动生成的代码,有副作用。在生成时推断结果是否未使用并在 (void)0 中交换 t 会显着增加复杂性。最好的解决方案是将其标记为可能未使用,否则我将不得不执行 -Wno-unused-value

最佳答案

是的,如果您在宏或类似的地方使用这些东西,这可能会非常令人不安。我通常在末尾使用完全无用的赋值来消除此类警告:

t = t;

这有两个影响:编译器现在认为 t 被使用,而且它的结果是一个右值,所以没有人可以尝试获取整个 ({ }) 表达式。

关于c - 将语句表达式标记为可能未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925618/

相关文章:

c - 在 C 中释放()malloc'ed 二维数组的最佳方法

ios - 编译使用 Boost 的 iOS 应用程序时出现可见性链接器警告

c++ - 计算 C 数组中三元组的频率以进行索引

c - do-while 循环评估两个 if 和 else if 语句。一种与输入无关。 (C)

c - 如何在两个应用程序之间共享一个共享库(*.so)实例

c - 如何更改 objdump 输出格式?

c++ - 与 'operator=' 不匹配(操作数类型为 'std::vector<int>' 和 'int'

c++ - 使用元编程的私有(private)成员存在性测试,GCC vs clang,哪个是对的?

使用 gcc 时 CLion 调试器不工作

c - Xlib + Unity 仅关闭允许的操作