# In English, it is called pound. In the macro definition of C language, one # represents stringization; two # represents concatenate in the macro definition, # The function is to Stringfication the macro parameters following it, that is, whether the macro variables are strings or constants, they are processed as characters. # Is called a concatenator to connect two tokens into one. Note that the connected object is a Token, not necessarily a macro variable. Example: [cpp] # include <iostream> void quit_command () {printf ("I am quit command \ n");} void help_command () {printf ("I am help command \ n");} struct command {char * name; void (* function) (void) ;};# define COMMAND (NAME) {# NAME, NAME ##_ command} # define PRINT (NAME) printf ("token" # NAME "= % d \ n", token # NAME) main () {int token9 = 9; PRINT (9); struct command commands [] = {COMMAND (quit), COMMAND (help),}; commands [0]. function () ;}the result is: token9 = 9I am quit command.