正如我之前的许多问题所述,我正在通过K&R工作,目前正在进入预处理器.其中一个更有意思的事情 - 我之前从未尝试过的任何学习C的尝试 - 是##预处理器操作员.根据K&R的说法:
预处理器运算符
##提供了一种在宏扩展期间连接实际参数的方法.如果替换文本中##的参数与a相邻,则参数将替换为实际参数,##并删除周围的空白区域,并重新扫描结果.例如,宏paste连接其两个参数:
#define paste(front, back) front ## back所以
paste(name, 1)创建令牌name1.
如何以及为什么有人会在现实世界中使用它?它的使用的实际例子是什么,有什么需要考虑的?
请解释一下答案:
#define f(g,h) g##h
main(){
printf("%d",f(100,10));
}
Run Code Online (Sandbox Code Playgroud) 考虑以下字符串:
Page 1 of 100
Run Code Online (Sandbox Code Playgroud)
哪里1和100不是固定值.
我如何通过将两个值作为参数传递来定义C宏以呈现该字符串?
需要说明的是,格式必须如下:
#define PAGE_IDX_MACRO(x,y)
Run Code Online (Sandbox Code Playgroud)