#define SRAM_DEBUG_ON 1
#define SRAM_INFO(fmt,arg...) printf("<<-SRAM-INFO->> "fmt"
",##arg)
#define SRAM_ERROR(fmt,arg...) printf("<<-SRAM-ERROR->> "fmt"
",##arg)
#define SRAM_DEBUG(fmt,arg...) do{
if(SRAM_DEBUG_ON)
printf("<<-SRAM-DEBUG->> [%d]"fmt"
",__LINE__, ##arg);
}while(0)
以上程序中fmt和arg代表什么?
printf函数中SRAM-INFO为什么加这种符号,fmt为什么引起来,argue为什么前面加##?
这个语句printf("<<-SRAM-DEBUG->> [%d]"fmt"
",__LINE__, ##arg)中 [%d]和__LINE__什么意思?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
## 符号拼接
MSDN上有个例子:
#define paster( n ) printf( "token"#n" = %d ", token##n )
int token9 = 100;
再调用 paster(9);宏展开后token##n直接合并变成了token9。整个语句变成了
printf( "token""9"" = %d", token9 );
在C语言中字符串中的二个相连的双引号会被自动忽略,于是上句等同于
printf("token9 = %d", token9);。
即输出token9 = 100
一周热门 更多>