Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
a中的“mm”符号在C中的含义是什么?_C_C Preprocessor - Fatal编程技术网

a中的“mm”符号在C中的含义是什么?

a中的“mm”符号在C中的含义是什么?,c,c-preprocessor,C,C Preprocessor,在C代码中,mm##是什么意思?例如: #定义寄存器(addr)*((易失性无符号整数*)(addr)) #定义abc(reg)寄存器(mm##reg) 根据: “##”预处理运算符执行标记粘贴。展开宏时,每个“##”运算符两侧的两个标记组合为一个标记,然后替换宏展开中的“##”和两个原始标记。通常两者都是标识符,或者一个是标识符,另一个是预处理编号。粘贴时,它们会生成更长的标识符。这不是唯一有效的案例。也可以将两个数字(或数字和名称,如1.5和e3)连接成一个数字。此外,可以通过标记粘贴形成多

在C代码中,
mm##
是什么意思?例如:

#定义寄存器(addr)*((易失性无符号整数*)(addr))
#定义abc(reg)寄存器(mm##reg)
根据:

“##”预处理运算符执行标记粘贴。展开宏时,每个“##”运算符两侧的两个标记组合为一个标记,然后替换宏展开中的“##”和两个原始标记。通常两者都是标识符,或者一个是标识符,另一个是预处理编号。粘贴时,它们会生成更长的标识符。这不是唯一有效的案例。也可以将两个数字(或数字和名称,如1.5和e3)连接成一个数字。此外,可以通过标记粘贴形成多字符运算符,例如+=


在您的例子中,它正在创建一个新的标识符,前缀为字符
mm

查找“c预处理器连接”,这是否回答了您的问题?简而言之:它用寄存器(mm123)替换了abc(123),寄存器(mm123)又被
*((volatile unsigned int*)(mm123))
替换。