鱼C论坛

 找回密码
 立即注册
查看: 862|回复: 1

[已解决]求助一个宏定义问题

[复制链接]
发表于 2020-11-17 22:40:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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()  ;;;;;;;;;;,一定要用字母

                               
登录/注册后可看大图
最佳答案
2020-11-18 00:35:25
        C语言中 #define 是提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。

       #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。

(1)简单的宏定义:
#define <宏名>  <字符串>
例: #define PI 3.1415926

(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define   A(x)   x
    一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译, 宏替换是简单的替换。

其实,宏定义就像函数一样,有时带参数,有时不带参数: int main() 与 int main(void)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-18 00:35:25 | 显示全部楼层    本楼为最佳答案   
        C语言中 #define 是提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。

       #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。

(1)简单的宏定义:
#define <宏名>  <字符串>
例: #define PI 3.1415926

(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define   A(x)   x
    一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译, 宏替换是简单的替换。

其实,宏定义就像函数一样,有时带参数,有时不带参数: int main() 与 int main(void)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表