странный синтаксис макроса C (#var) - PullRequest
3 голосов
/ 31 августа 2009

Что означает символ # при использовании в качестве префикса переменной в макросе #define?

Например,

#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)

Ответы [ 2 ]

7 голосов
/ 31 августа 2009

Это оператор Stringizing , который преобразует параметры макроса в строковые литералы.

Итак, в вашем примере:

my_setopt(1, 2, 3)

расширится до:

_my_setopt(1, 0, config, "2", 2, 3)
2 голосов
/ 31 августа 2009

# цитирует выражение. Например:

#define SHOW(BAR) printf("%s is %d\n", #BAR , BAR)
SHOW(3+5);  // prints: 3+5 is 8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...