Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关键字enum在C+;中启动函数定义+; 我知道,在C和C++中,你可以用枚举< /COD>关键字: enum { RED, GREEN, BLUE };_C++_C_Syntax_Enums - Fatal编程技术网

关键字enum在C+;中启动函数定义+; 我知道,在C和C++中,你可以用枚举< /COD>关键字: enum { RED, GREEN, BLUE };

关键字enum在C+;中启动函数定义+; 我知道,在C和C++中,你可以用枚举< /COD>关键字: enum { RED, GREEN, BLUE };,c++,c,syntax,enums,C++,C,Syntax,Enums,如果没有为名称指定常量,编译器将以递增方式执行,从每个新枚举的0开始 现在让我们看一下区别: enum COLOR { RED, GREEN, BLUE }; 在C语言中,颜色是所谓的“标记”。它不能直接用于变量或返回类型声明中。相反,您必须在它前面加上enum关键字(或者先为它做一个typedef): 在C++中,枚举名称是正确的类型名称,因此枚举< /C>不是必需的。 但你可以把它包括在内,它似乎在语法上是正确的,无害的: enum COLOR someCppFunction(); 在C

如果没有为名称指定常量,编译器将以递增方式执行,从每个新枚举的
0
开始

现在让我们看一下区别:

enum COLOR { RED, GREEN, BLUE };
在C语言中,颜色是所谓的“标记”。它不能直接用于变量或返回类型声明中。相反,您必须在它前面加上
enum
关键字(或者先为它做一个
typedef
):

在C++中,枚举名称是正确的类型名称,因此<代码>枚举< /C>不是必需的。 但你可以把它包括在内,它似乎在语法上是正确的,无害的:

enum COLOR someCppFunction();

<>在C++代码中枚举名称之前,是否应该保留<代码>枚举> /Cord>关键字(“出于兼容性原因”)?< /p> ,因为您可以在c< /p>中执行此操作。
typedef enum Color Color;
enum Color {Red, Green, Blue, White, Black};
然后将
Color
enum
s声明为

Color color;

那么,语言不是改变语法的正确标准,如果它存在的话,它可能是有意让读者意识到这样一个事实,即这些变量是
enum
s。

有什么好处?只有在C++中编译源代码,并且在不同的项目中使用C++编译器时,E好处才会出现。因为您也可以在C中使用
typedef
,所以这仍然不是一个很大的好处,而且这样更简洁


P>另一方面,如果使用EnUM,则必须记住,您必须一致地执行,否则将有两个版本,这可能会导致混乱和(最坏的情况)意外的副作用,尤其是当与多个开发人员共享代码时。

我认为您应该删除C标记,因为问题只适用于C++。在C中,您必须使用typedef来“除去”类型前面的枚举。如果您不再使用C,我将不会这样做。这个问题可能是helpful@DanielDaranas“兼容性原因”只是个笑话。我会将剩余的
enum
视为一个错误,但我不想仅仅因为“感觉不好”而更改代码。如果“出于兼容性原因”是一个笑话,那么问题实际上有点不同。“出于兼容性的原因”,我不会将枚举放在那里,但我会犹豫是否修改旧的、经过测试的C代码,只是为了让它更漂亮。这一点很好。但是今天,格式化一个以
enum
开头的函数失败,这就是我问的原因。谢谢你的提示,我来看看。顺便说一句,astyle可以让我没有指定的东西保持不变:这样我就可以逐步引入格式规则。@Wolf uncrustify有很多选项,当我使用它时,我只是厌倦了调整它,并保留默认值。还有一个基于Qt的GUI,所以多平台,我不记得它的名字。谢谢你的回答,这最能表达我的“感觉”。我个人认为你应该总是限制你必须记住的东西,因为其他人不会遵循它,你必须检查它是否被强制执行。只有当您觉得它们对于更清晰的代码是绝对必要的和/或易于遵循时,才执行这些操作。没错,这就是为什么我避免使用
typedef
ing
struct
enum
Color color;