Сделайте себе одолжение и не делайте этого.
Возможно, ваше программное обеспечение имеет некоторую фазу конфигурации / настройки перед компиляцией (например, команда autoconf ... тьфу! ( дрожь )) или что-то более вменяемое, например, CMake), используйте это.
Напишите небольшие тесты (макросы autoconf), которые проверяют, принимает ли компилятор интересующий вас __attribute__
и работает ли он должным образом.Если все прошло успешно, напишите макрос HAVE_GCC_ATTRIBUTE_XXX
в файл config.h
, который входит в ваш источник.
Затем используйте этот макрос с #ifdef
, чтобы проверить, следует ли указывать атрибут в функции или нет,или, может быть, вам следует использовать другой хак для имитации отсутствия атрибута.