cowde 发表于 2019-8-27 23:46:11

求助!关于#define的问题

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

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

{:9_220:}

ba21 发表于 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]
查看完整版本: 求助!关于#define的问题