Несбалансированные скобки с использованием __attribute__ в g++

Сегодня я попробовал clang над проектом, который разработал некоторое время назад. Я был удивлен, когда он столкнулся с ошибкой компиляции, так как я успешно скомпилировал свой проект с помощью g++.

Этот короткий фрагмент воспроизводит строку, в которой произошла ошибка:

int main() {
    __attribute__((aligned(16)) char arr[5];
}

Что приводит к этой ошибке:

test.cpp:2:32: error: expected ')'
    __attribute__((aligned(16)) char arr[5];
                               ^
                               )

Как видите, скобки не сбалансированы. Есть три '(' и два ')'. Это явно выглядит так, как будто это должно привести к ошибке компиляции.

Это допустимое использование этого ключевого слова? Кажется, я не могу найти ничего в документации, что указывает на это.

Я использую g++ 4.5.2 и clang 2.8.

Обратите внимание, что эта ошибка возникает при использовании gcc вместо g++.

6
задан mfontanini 16 May 2012 в 03:01
поделиться