2

我正在尝试将 C 程序(通过动态库)与 Python 和 ctypes 模块一起使用。头文件中定义的几个常量对我来说很重要,但我不确定如何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 书籍似乎涵盖了第一种情况或明确定义每个值的情况,但没有涵盖这种混合情况。

提前谢谢了!

4

2 回答 2

5

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

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

所以

enum{THING1=-1, THING2, THING3};

THING2 = 0, THING3 = 1,和

enum{THING1=1, THING2, THING3, THING4=-1}

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

于 2013-04-19T21:38:13.793 回答
3

它们只是从以前的值增加。在你的例子中,

enum{THING1=-1, THING2, THING3};

相当于

enum{THING1=-1, THING2=0, THING3=1};

和这个

enum{THING1=1, THING2, THING3, THING4=-1}?

相当于

enum{THING1=1, THING2=2, THING3=3, THING4=-1}
于 2013-04-19T21:39:07.997 回答