【发布时间】:2014-09-16 09:02:04
【问题描述】:
出于好奇,我正在试验这个:
enum RxqType
{
A = (1 << 0),
B = (1 << 1),
C = (A | B),
D = A+B+C
};
枚举器 C 和 D 是根据早期的枚举器定义的。这是不寻常的,所以我不确定它是否安全。我无法通过 Google 找到有关它的示例(尽管可能会忽略)。
当我在 Visual C++ 2013 和 MinGW 上 printf 或 cout C 和 D 时似乎没问题。但我担心它是否符合标准,以及它是否会触发未定义的行为。
谁能回答我对标准一致性和未定义行为的担忧?还有什么我需要担心的吗?
【问题讨论】:
-
来自 C++ 标准的示例:
enum { d, e, f=e+2 };... -
@PiotrNycz 哦,我应该记得在下一个问题之前查看标准。
-
@PiotrNycz 严格来说,示例并不规范。尽管该标准当然不太可能包含不合规的示例。
-
@Lundin,“符合标准”和“一个好主意”不一定是一回事。 ;)(没有评论这种语法是好还是坏,只是库代码并不总是用最佳实践编写的。)