Портирование старого кода C ++ из Solaris в Linux

Мне просто интересно, если этот тип объявлений разрешен в 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.

Должен ли я включить другие библиотеки для компиляции, или этот стиль декларации больше не разрешен?

3

Решение

Это почти никогда не было разрешено. Первый стандарт C ++ запрещал правило C «implicit int»; C99 также избавился от этого правила. Но правило простое, и исправление кода также просто: просто придерживайтесь int там, где компилятор жалуется. Возможно, утомительно, но просто.

8

Другие решения

Default int не допускается в C ++, вам нужно исправить этот код и установить явный int тип для переменных.

1

По вопросам рекламы [email protected]