【发布时间】:2014-08-25 06:23:05
【问题描述】:
有什么办法可以抑制gcc在这段代码中产生的警告:
int main() {
struct flagstruct {
unsigned flag : 1;
} a,b,c;
a.flag = b.flag | c.flag;
return a.flag;
}
警告是
warning: conversion to 'unsigned char:1' from 'int' may alter its value [-Wconversion]
看起来这两个标志在 ored 在一起时扩展为 int 。 我认为真正奇怪的是,将两个标志中的任何一个都设置为 unsigned 会抑制警告。
a.flag = (unsigned)b.flag | c.flag;
这是编译器错误还是应该以这种方式工作?
【问题讨论】:
-
请给
gcc版本。 -
选择你最喜欢的。使用
-Wconversion编译时,它们都会生成警告 -
我希望收到有关使用尚未设置为值的变量(3 个单位定义 a、b、c)的警告。
-
@user3629249 是的,但不是重点
标签: c gcc compiler-warnings suppress-warnings