Что означает символ # при использовании в качестве префикса переменной в макросе #define?
Например,
#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)
Это оператор Stringizing , который преобразует параметры макроса в строковые литералы.
Итак, в вашем примере:
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