我只是想知道C ++中是否允许这种类型的声明
static nextUnassignedTableID = 0;
static nextUnassignedFieldID = TSFID_MINIMUM_USER_TSFID;
它不会在Solaris / AIX上抱怨任何内容。
但是,在Red Hat Enterprise Linux上,它抱怨
TSIDConverter.cpp(637): error #303: explicit type is missing ("int" assumed)
static nextUnassignedTableID = 0;
TSIDConverter.cpp(638): error #303: explicit type is missing ("int" assumed)
static nextUnassignedFieldID = TSFID_MINIMUM_USER_TSFID;
在Linux上,我使用Intel 11.1编译器和命令icpc -m32。
我是否应该包含其他库以使其成为编译器,还是不再允许这种声明风格?
答案 0 :(得分:8)
它几乎从未被允许过。第一个C ++标准不允许使用C"隐含的int"规则; C99也摆脱了这条规则。但规则很简单,修复代码也很简单:只需在编译器抱怨的地方粘贴int
即可。也许是乏味的,但很简单。
答案 1 :(得分:1)
Default int
,您需要修复此代码并为变量设置显式int
类型。