C語言宏定義時#(井號)和##(雙井號)的用法


#在英語里面叫做 pound

在C語言的宏定義中,一個#表示字符串化;兩個#代表concatenate

舉例如下:

 

#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();

 

得到的結果是:

 

token9=9
I am quit command

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM