在C中##是什么意思?

在C中##是什么意思?,c,linux,gcc,c-preprocessor,C,Linux,Gcc,C Preprocessor,我在查看berkeley实验室检查点/重启的源代码时发现了以下预处理宏定义: #define io_wrap(_op,_ctx,_file,_buf,_count) \ cr_##_op((_ctx)->req->errbuf,(_file),(_buf),(_count)) 知道这到底是什么意思吗 我在blcr-0.8.5/vmadump4/vmadump.h中找到了这个 谢谢大家! ##用于C预处理器中的串联 这个结果\u op((_ctx)->req->e

我在查看berkeley实验室检查点/重启的源代码时发现了以下预处理宏定义:

  #define io_wrap(_op,_ctx,_file,_buf,_count) \
        cr_##_op((_ctx)->req->errbuf,(_file),(_buf),(_count))
知道这到底是什么意思吗

我在blcr-0.8.5/vmadump4/vmadump.h中找到了这个

谢谢大家!

##
用于C预处理器中的串联

这个结果
\u op((_ctx)->req->errbuf,(_file),(_buf),(_count))
cr
\35;
连接在C预处理器中


这个结果
\u op((\u ctx)->req->errbuf,(\u file),(\u buf),(\u count))
cr
连接,它是令牌连接。参见GCC手册:


有关它的一些基本细节,请参见这个问题:

它是令牌连接。参见GCC手册:


关于它的一些基本细节,请参见以下问题:

“这东西到底是什么意思?”lol:DIt的意思是将
cr
\u op()
的值连接起来,而不添加空格,如果它们之间用空格分隔,则会添加空格。“这东西到底是什么意思?”lol:DIt意味着将
cr
\u op()
的值连接起来,而不添加空格,如果空格分隔,则会添加空格。