Сегодня я попробовал 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++.