函数参数中的 C++ enum 关键字

C++ enum keyword in function parameters

在函数参数中使用 enum 关键字有什么意义?没有它似乎做同样的事情。

enum myEnum{
  A, B, C
};

void x(myEnum e){}

void y(enum myEnum e){}

两者有区别吗?

在此函数声明中

void x(myEnum e){}

枚举 myEnum 应已声明且未隐藏。

在此函数声明中

void y(enum myEnum e){}

这里使用了所谓的详细类型名称。例如,如果在范围内声明了一个名为 myEnum 的变量,例如

int myEnum;

然后使用这个函数声明

void y(enum myEnum e){}

允许引用名为 myEnum 的枚举,如果没有关键字 enum 将被变量声明隐藏。

这是一个演示程序。

#include <iostream>

enum myEnum{
  A, B, C
};

void x(myEnum e){}

int myEnum; 

//  compiler error
//void y(myEnum e){} 

void y(enum myEnum e){}

int main() {
    // your code goes here
    return 0;
}

可以看出,如果取消注释,注释的函数声明将无法编译。