无法在枚举中声明"div"

use*_*874 10 c++ enums scope namespaces

我想用基本的数学运算声明一个枚举如下:

enum Operations 
{
    div,
    mul,
    add,
    sub
};
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨这个声明,因为div是C++中的保留关键字.我怎样才能覆盖它?还是有任何解决方案?

这是错误消息:

错误:'div'重新声明为不同类型的符号/usr/include/stdlib.h:158:错误:先前声明'div_t div(int,int)'

jua*_*nza 22

div不是关键字,而是标准库函数,声明在stdlib.h或可能在cstdlib.

最简单的解决方案是使用不同的标识符.否则,您可以使用范围枚举:

enum class Operations 
{
    div,
    mul,
    add,
    sub
};
Run Code Online (Sandbox Code Playgroud)

这将使枚举的值的Operations范围(Operations::div,Operations::mul等等)


Leo*_*ang 6

因为div是一个声明的函数cstdlib,并且未映射的枚举的名称可以省略为全局.这意味着你不能使用div作为枚举.

在C++ 11中,为这种情况引入了范围枚举

enum class Operations 
{
    div,
    mul,
    add,
    sub
};
Run Code Online (Sandbox Code Playgroud)

然后你就可以使用了 Operations::div