鱼C论坛

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

[已解决]求助!关于#define的问题

[复制链接]
发表于 2019-8-27 23:46:11 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 cowde 于 2019-8-27 23:53 编辑

如图,PRZIE(x)的值本来是1.95加上两行#define后
PRZIE(x)的值变成了9.45



最佳答案
2019-8-28 00:12:58
PRIZE宏名字一样。()里只是参数

高级宏定义
预处理
-文件包含
-宏定义
-条件编译

宏定义:大写字母,不是语句所以不用;结束,以#undef结束

不带参的宏定义
#define PI 3.14159

带参的宏定义
#define MAX(x, y) (((x) > (y)) ? (x) :(y))
1:把(((x) > (y)) ? (x) :(y))里的值替换成 MAX(x, y)中 x ,y 的值
2:仅仅是把 MAX(x, y) 替换为 (((x) > (y)) ? (x) :(y)) 假如 x=3, y=5 则在程序中:
printf("%d 是大数", MAX(x, y)); 宏替换后 printf("%d 是大数", 3 > 5 ? 3 : 5);

3:# 在带参数的宏定义中,#运算符后面应该跟一个参数,预处理器会把这个参数转换为一个字符串。
        #define STR(s) # s
        printf(STR(Hello    %s num = %d\n), STR(ILove), 520);
   ## 是记号连接运算符,可以使用##连接两个参数
        #define TOGETHER(x, y) x ## y
        pritnf("%d\n", TOGETHER(5, 20)); //输出 520
4:宏可变参数
        #define SHOWLIST(...) printf(#__VA_ARGS__)
        #define PRINT(format, ...) printf(# format, ##__VA_ARGS__)
        其中...表不使用可变参数,__VA_ARGS__在预处理中被实际的参数集所替换。S
截图1.png
截图2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-28 00:12:58 | 显示全部楼层    本楼为最佳答案   
PRIZE宏名字一样。()里只是参数

高级宏定义
预处理
-文件包含
-宏定义
-条件编译

宏定义:大写字母,不是语句所以不用;结束,以#undef结束

不带参的宏定义
#define PI 3.14159

带参的宏定义
#define MAX(x, y) (((x) > (y)) ? (x) :(y))
1:把(((x) > (y)) ? (x) :(y))里的值替换成 MAX(x, y)中 x ,y 的值
2:仅仅是把 MAX(x, y) 替换为 (((x) > (y)) ? (x) :(y)) 假如 x=3, y=5 则在程序中:
printf("%d 是大数", MAX(x, y)); 宏替换后 printf("%d 是大数", 3 > 5 ? 3 : 5);

3:# 在带参数的宏定义中,#运算符后面应该跟一个参数,预处理器会把这个参数转换为一个字符串。
        #define STR(s) # s
        printf(STR(Hello    %s num = %d\n), STR(ILove), 520);
   ## 是记号连接运算符,可以使用##连接两个参数
        #define TOGETHER(x, y) x ## y
        pritnf("%d\n", TOGETHER(5, 20)); //输出 520
4:宏可变参数
        #define SHOWLIST(...) printf(#__VA_ARGS__)
        #define PRINT(format, ...) printf(# format, ##__VA_ARGS__)
        其中...表不使用可变参数,__VA_ARGS__在预处理中被实际的参数集所替换。S

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cowde + 5 + 5 + 3 懂了懂了,多谢大佬

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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