Что это за макрос?

я наткнулся на следующий код:

#include<stdio.h>
#define d(x) x(#x[3])
int main(){
d(putchar);
}

который печатает c в качестве вывода. Интересно, что делает макрос #define d (x) x (#x [3]) ? Есть ли в языке C оператор типа # ? Я вижу это внутри тела макроса, то есть здесь x (#x [3]) . На мой нормальный глаз это выглядит по-другому, я вижу на языке C, но на самом деле Что это значит?

Изменить: Каково реальное использование # в реальном мире?

Я новичок в C, и будет хорошо, если объяснение будет простым. Заранее спасибо.

16
задан Ant's 28 September 2011 в 15:36
поделиться