Есть ли способ сделать макросы C независимыми от ключевых слов? - PullRequest
3 голосов
/ 28 апреля 2010

Есть ли способ объединить ключевые слова в макросе и получить
C вести себя более динамично, как в:

#define macro(fun,ction,var,iable) function(variable)

Я знаю, что подобные вещи существуют на других языках.

Ответы [ 4 ]

6 голосов
/ 28 апреля 2010

Вы можете использовать ## для объединения имен в макросах

fun ## ction ...

2 голосов
/ 28 апреля 2010

Нет. Хотя, как говорит Майкл, существует ##, он применяется (как вся предварительная обработка) до того, как C или C ++ проверяет ключевые слова, и даже использование его для генерации любого ключевого слова предварительной обработки может привести к сбою препроцессора.

Так что, как правило, если что-то не компилируется, когда вы вводите это напрямую, это не происходит при генерации препроцессором.

0 голосов
/ 28 апреля 2010
0 голосов
/ 28 апреля 2010

Существуют некоторые предостережения относительно его использования (например, вам нужно перепрыгнуть через несколько обручей, чтобы объединить результаты других расширений макросов), но в документах GCC обсуждается основная форма:

http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

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