Для чего компиляторы, совместимые с GCC и GCC, используют __attribute__
, большинство других компиляторов используют директивы #pragma
.
Я думаю, что решение GCC лучше, поскольку требуемое поведение нераспознанного #pragma
состоит в том, чтобы игнорировать его, тогда как если вы используете компилятор, который не понимает спецификацию __attribute__
, он не будет компилироваться - что, как правило, лучше, так как вы тогда знаете, что вам нужно портировать.
Спецификации атрибутов используются для определения аспектов типов, данных и функций, таких как хранение и выравнивание, которые не могут быть заданы с помощью C. Часто они являются специфическими для целей, в основном они непереносимы, безусловно, между компиляторами и часто между целями. Избегайте их использования, за исключением случаев, когда это абсолютно необходимо для правильного функционирования кода.