混合定义如何在枚举中起作用?

mis*_*haF 2 c python ctypes

我正在尝试使用Python和ctypes模块的C程序(通过动态库).头文件中定义的几个常量对我来说很重要,但我不确定如何enum使用它来设置它们的值.

显而易见的,我想我明白了: enum{THING1, THING2, THING3};

THING1=0, THING2=1, THING3=3

但是,这个怎么样? enum{THING1=-1, THING2, THING3};

结果是: THING1=-1, THING2=1, THING3=2

这个如何? enum{THING1=1, THING2, THING3, THING4=-1}

我没有一个简单的方法来测试这个,所以希望有人可以解释这种方式的enum工作方式.我查看的C书似乎涵盖了第一种情况或明确定义每个值的情况,但不是这种混合情况.

提前谢谢了!

Dan*_*her 5

enum除非另有说明,否则第一个常量的值为0.

enum除非明确指定,否则任何其他常量的值都比前一个值大1.

所以

enum{THING1=-1, THING2, THING3};
Run Code Online (Sandbox Code Playgroud)

THING2 = 0, THING3 = 1,和

enum{THING1=1, THING2, THING3, THING4=-1}
Run Code Online (Sandbox Code Playgroud)

THING2 = 2, THING3 = 3(并THING4 = -1明确给出).