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

roy*_*g86 3 c++ linux static solaris

我只是想知道在C++中是否允许这种类型的声明

  static nextUnassignedTableID = 0; 
  static nextUnassignedFieldID = TSFID_MINIMUM_USER_TSFID;
Run Code Online (Sandbox Code Playgroud)

它不会在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;
Run Code Online (Sandbox Code Playgroud)

在Linux上,我使用Intel 11.1编译器和命令icpc -m32.

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

Pet*_*ker 8

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