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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)