C语言 - 宏 | 条件编译

1 - 主要功能是做替换。它的使用能让程序更加易于修改。宏不是变量,只是做标记,它不做运算优先级的检查

复制代码
 1 #include <stdio.h>
 2 
 3 #define SUMVALUE(x,y)   x+y
 4 #define SUMNUM(a,b)     (a+b)
 5 int main(int argc, const char * argv[]) {
 6     
 7     
 8     int a =  SUMVALUE(20, 10)*SUMVALUE(10, 30);
 9     printf("%d\n",a); // 150
10     
11     int b =  SUMNUM(20, 10)*SUMNUM(10, 30);
12     printf("%d\n",b); // 1200
13     
14 
15     return 0;
16 }
复制代码

2 - 命名规则:纯大写或者驼峰命名法

复制代码
 1 #include <stdio.h>
 2 #define kCount 10 // 末尾不要加分号
 3 #define kSumValue(x,y) x+y // 有参宏
 4 #define kMaxValue(x,y) x>y ? x : y
 5 
 6 int main(int argc, const char * argv[]) {
 7     
 8     // 冒泡排序
 9     int array [kCount]={7,8,9,23};
10     for (int i=0; i<kCount-1; i++) {
11         for (int j=0; j<kCount-1-i; j++) {
12             if (array[j]>array[j+1]) {
13                 int temp = array[j];
14                 array[j]=array[j+1];
15                 array[j+1]=temp;
16             }
17         }
18     }
19     
20     for (int i=0; i<kCount; i++) {
21         printf("%d ",array[i]);
22     }
23     
24     // 
25     int sum = kSumValue(3,5);
26     printf("\n%d ",sum);
27     
28     // 比较
29     int max =kMaxValue(4,5);
30     printf("\n%d\n",max);
31     
32     return 0;
33 }
复制代码

条件编译

1 - 条件编译和 if 语句不同,前者是编译期执行,后者是在运行期执行

复制代码
 1 #include <stdio.h>
 2 
 3 #define FUCK 0
 4 int main(int argc, const char * argv[]) {
 5 
 6 // 方式一:ifdef
 7 #ifdef FUCK
 8     printf("FUCK\n");// 执行此行
 9 #else
10     printf("SHIT\n");
11 #endif
12     
13     
14 // 方式二:ifndef
15 #ifndef FUCK
16     printf("FUCK\n");
17 #else
18     printf("SHIT\n");// 执行此行
19 #endif
20 
21     
22 // 方式三:后跟常量,非 0 即真
23 #if FUCK
24     printf("FUCK 10 \n");
25 #else
26     printf("No \n");
27 #endif
28     
29 #if 5
30     printf("5\n");// 执行此行
31 #else
32     printf("10\n");
33 #endif
34     
35     
36     return 0;
37 }
复制代码

 

posted on   低头捡石頭  阅读(21)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示