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

Porting an old C++ code from Solaris to Linux

本文关键字:Linux Solaris C++ 代码      更新时间:2023-10-16

我只是想知道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上,我使用的是带有命令icpc-m32的英特尔11.1编译器。

为了编译它,我应该包括其他库吗?还是不再允许这种类型的声明了?

这几乎是从未被允许的。第一个C++标准不允许C的"隐式int"规则;C99也取消了这个规则。但规则很简单,修复代码也很简单:只要把int放在编译器抱怨的地方。也许很挑剔,但直截了当。

Default int在C++中是不允许的,您需要修复此代码并为变量设置显式的int类型。