求助一个宏定义问题
#include#define A(x)x;x;x;x;x;x;x;x;x;x;
int main(void)
{
int n=0;
A(A(A(printf("M",n++))))
return 0;
}
为什么宏定义要用字母 A(x)x;x;x;x;x;x;x;x;x;x;
而不能用 A();;;;;;;;;;,一定要用字母https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif C语言中 #define 是提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1)简单的宏定义:
#define <宏名> <字符串>
例: #define PI 3.1415926
(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define A(x) x
一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译, 宏替换是简单的替换。
其实,宏定义就像函数一样,有时带参数,有时不带参数: int main() 与 int main(void)
页:
[1]