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