Что означает символ # при использовании в качестве префикса переменной в макросе #define?странный синтаксис макроса C (#var)
Например,
#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)
Что означает символ # при использовании в качестве префикса переменной в макросе #define?странный синтаксис макроса C (#var)
Например,
#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)
Это Stringizing Operator, который преобразует параметры макросов в строковых литералов.
Таким образом, в вашем примере:
my_setopt(1, 2, 3)
будет расширяться:
_my_setopt(1, 0, config, "2", 2, 3)
#
цитирует выражение. Например:
#define SHOW(BAR) printf("%s is %d\n", #BAR , BAR)
SHOW(3+5); // prints: 3+5 is 8