Крутые встроенные модули GCC - PullRequest
2 голосов
/ 24 января 2012

За многие годы я слышал о многих классных расширениях и встроенных функциях GCC, но я всегда забываю о них, прежде чем думать об их использовании.

Какие классные расширения GCC ивстроенные модули и некоторые реальные примеры их использования?

Ответы [ 3 ]

3 голосов
/ 24 января 2012

GCC предоставляет множество функций, таких как расширения компилятора, которые часто используются мной:

Выражения операторов
Назначенные инициализаторы

На веб-сайте GCC есть еще много документов здесь .

Предупреждение: Однако использование любой формы расширений компилятора делает ваш код непереносимым по сравнению с другими компиляторами, поэтому используйте их с таким риском.

2 голосов
/ 15 апреля 2014

Если вам нужны реальные примеры того, насколько полезными могут быть расширения gcc , тогда GCC-хаки в ядре Linux - интересный выбор, поскольку, если он используется в ядре Linux тогда это, вероятно, хороший признак того, что он имеет какое-то реальное влияние. Как отмечалось ранее, использование расширений делает ваш код непереносимым, но clang прилагает усилия для поддержки расширений gcc , которые могут смягчить некоторые последствия.

Одним из расширений, которое не охватывается, но часто используется в ядре Linux, является выражения операторов , также см. Окружаются ли операторы (блоки) compund выражениями parens в ANSI C? .

В статье рассматриваются следующие особенности:

1 голос
/ 24 января 2012

Я недавно наткнулся на довольно много из них, которые действительно полезны для подражания новому стандарту C11. На самом деле многие новые функции уже есть, но с другим синтаксисом.

  • атрибуты выравнивания
  • локальные переменные потока
  • атрибут noreturn для функций
  • атомарные операции (через их __sync_... встроенные функции)
  • типовое программирование

Я написал кое-что об этом и как использовать это с интерфейсами C11 в моем блоге .

Две функции, которые не включены в функциональность C11, которые действительно хороши и которые я бы очень хотел видеть в будущих версиях стандарта

  • операторные выражения (уже упоминавшиеся Als)
  • __typeof__
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...