我知道c和c++标准指出,如果您不指定第一个元素的值,则枚举的起始值将默认为0
。
但是例如在Linux内核源代码中,我数十次遇到了奇怪的声明。例如numa_faults_stats
:
enum numa_faults_stats {
NUMA_MEM = 0,NUMA_cpu,NUMA_MEMBUF,NUMA_cpuBUF
};
将此枚举的第一个元素显式设置为0
有什么需要?
Related post。
在C和C ++中,有很多关于各种事物的规则:这是其中之一。有时,为了清楚起见,最好是明确的。
另一种常见的用法是在函数原型中使用变量名(只需要类型)。还有一种是用两种语言的return 0;
中的main
。在C ++ public
或private
中显式使用class
和struct
是另一种方法。
您可以使用枚举,而不必关心它的值,就像仅使用它们之间的互补关系一样。但是有时候它的价值很重要。您可以将is用作数组的索引。例如。