C语言-使用宏进行定义和条件编译
#define PI 3.14 来定义输入模型的参数
/* 使用宏定义进行定义 */ #include <stdio.h> #define PI 3.14f #define CICLE(r) r * PI * 2 //定义周长 int main() { int radius = 0; printf("请输入圆的半径:"); scanf("%d", &radius); printf("%g\n", CICLE(radius)); }
gcc -DSIZE = 5 10macro.c 使用外部命令来定义
/* 使用命令进行编译 */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int arr[SIZE] = {0}; int num = 0; for (int tmp = 0;tmp < SIZE;tmp++) { arr[tmp] = rand() % 36 + 1; } for (int tmp = 0;tmp < SIZE;tmp++) { printf("%d ", arr[tmp]); } printf("\n"); }
使用三目运算来构造函数的返回值
/* 宏演示 */ #include <stdio.h> #define NEG(n) 0 - n #define ABS(n) n > 0 ? n : 0 - n void Abs(int *p_val) { if (*p_val < 0) { *p_val = NEG(*p_val); } } int main() { int var = 0, var1 = 0; printf("请输入一个数字:"); scanf("%d", &var); Abs(&var); printf("输入数字的绝对值是%d\n", var); printf("请输入一个数字:"); scanf("%d", &var1); printf("输入数字的绝对值是%d\n", ABS(var1)); }
定义两个数据进行相加操作,添加括号用来保证结果
/* 计算两个数进行相加操作 */ #include <stdio.h> #define REDUCE(A, B) ((A) - (B)) int main() { int val = 0; printf("%d\n", 20 - REDUCE(10, 5)); printf("%d\n", REDUCE(20, 10 - 5)); return 0; }
使用三目运算定义宏函数,使用宏函数查找数组中最小的数字
/* 使用宏找出数据中最小的数 */ #include <stdio.h> #define MIN(a, b) ((a) > (b) ? (b) : (a)) int main() { int val = 0, val1 = 0, val2 = 0, tmp = 0; printf("请输入三个数字:"); scanf("%d%d%d", &val, &val1, &val2); tmp = MIN(MIN(val, val1), val2); printf("最小的数字是%d\n", tmp); }
使用#n 和 p_##n 对变量的命名,以及将数据转换成字符串类型
/* 宏操作符演示 */ #include <stdio.h> #define STR(n) #n //将输入的数字转换为字符串 #define PTR(n) p_##n //将输入的数字进行重新的命名 int main() { int val = 0; int *PTR(val) = &val; printf("%d\n", *PTR(val)); //输出函数的具体数字 printf("%s\n", STR(2 + 3)); //将内容转换为字符串 }
使用ifdef 和 ifndef 进行条件编译
/* 条件编译演示 */ #include <stdio.h> int main() { //#ifdef YI //如果编译的时候定义了YI这个宏,就编译前一组语句忽略后一组语句,否则编译后一组忽略前一组 // gcc -DYI 03compile.c #ifndef ER //如果编译的时候没有编译ER,就编译前一组语句忽略后一组语句,否则编译后一组语句忽略前一组语句 printf("1\n"); #else printf("2\n"); #endif return 0; }
进行条件编译的作业题
/* 点菜程序 */ #include <stdio.h> int main() { int val = 0; #ifndef ZHAOBENSHAN printf("请输入要点的菜:"); scanf("%d", &val); if (val == 1){ printf("小龙虾正在准备\n"); } else{ printf("没有小鸡炖蘑菇\n"); } #else printf("请输入要点的菜:"); scanf("%d", &val); if (val == 1){ printf("没有小龙虾\n"); } else{ printf("小鸡炖蘑菇真没有\n"); } #endif return 0; }
使用 #if #elif #else #endif 进行三种情况的条件编译
/* 条件编译演示 */ #include <stdio.h> int main() { #if defined(GONGCHANG) //编译时定义过GONGCHANG宏 printf("80%%\n"); //显示工厂店的折扣比例 #elif !defined(GONGCHANG) && !defined(JINGPIN) //编译时既没有定义过GONGCHANG宏也没定义过JINGPING宏 printf("100%%\n"); //显示普通店的折扣比例 #else printf("120%%\n"); //显示精品店的折扣比例 #endif return 0; }
每天更新pyQt5内容