我们可以在函数中定义 class / struct 。我们还可以在函数中定义枚举和联合吗?
void fun() {
enum {BIG, MID, SMALL};
// other code.
}
我可以使用gcc 4.8.2编译代码,但我不确定它是否合法。
答案 0 :(得分:15)
是,在函数中定义枚举是完全可以的。您的代码描绘了完全合法的匿名枚举声明。
可以在函数内声明结构和类 同样(也可能是匿名的)。 对于在其中声明的类型的唯一限制 一个函数(而不是在命名空间或类范围) 是它们不能用作模板参数。
more information on
Enumeration
自C ++ 11以来,关于模板参数的限制已经改变,有关模板参数的更多信息可以在链接Template Parameters上找到