将旧的C ++代码从Solaris移植到Linux

时间:2012-09-11 18:10:32

标签: c++ linux static solaris

我只是想知道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。

我是否应该包含其他库以使其成为编译器,还是不再允许这种声明风格?

2 个答案:

答案 0 :(得分:8)

它几乎从未被允许过。第一个C ++标准不允许使用C"隐含的int"规则; C99也摆脱了这条规则。但规则很简单,修复代码也很简单:只需在编译器抱怨的地方粘贴int即可。也许是乏味的,但很简单。

答案 1 :(得分:1)

在C ++中不允许使用

Default int,您需要修复此代码并为变量设置显式int类型。