W tym kontekście (zastosowane do odwołania do parametru w definicji makra), znak funta oznacza rozwinięcie tego parametru do literalnego tekstu argumentu przekazanego do makra.
W takim przypadku, jeśli wywołasz PRINT(5)
, rozszerzeniem makra będzie printf("5" "%d\n", 5);
, które wydrukuje 5 5
; niezbyt użyteczne; jednak jeśli wywołasz PRINT(5+5)
, rozszerzeniem makra będzie printf("5+5" "%d\n", 5+5);
, które wydrukuje 5+5 10
, trochę mniej banalne.
Ten przykład jest wyjaśniony w this tutorial on the C preprocessor (który, nawiasem mówiąc, jest pierwszym hitem Google dla c macro pound sign).
Possbible duplikat tego http://stackoverflow.com/questions/10676999/stringizing-operator – Omkant