C语言 - #define宏的定义与使用方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gilgamesho/article/details/50539383

一.宏的概念与定义方法
1.被定义为”宏”的标示符称为”宏名”.在编译预处理时,对程序中所有出现的”宏名”,都用宏定义中德字符串去替换,这称为”宏替换”或者”宏展开”.
2.宏定义是由源程序中德宏定义命令完成的.宏替换是由预处理程序自动完成的;在C语言中,”宏”分为有参数和无参数两中.

二.#define的使用

1.”#”表示是一项预处理指令,
2.以”#”开头的均为预处理指令.
3.先给出使用场景 : 频繁使用的简单的 字符串/表达式/格式串,复杂的还是选择使用函数为好;

格式:

#define 标示符 字符串/表达式/格式串
#define 宏名(形参表) 字符串/表达式/格式串
#undef 终止宏定义的作用域
#undef 标示符/宏名

示例1 : #define

#include "stdio.h"
#define H 6 //定义宏
int main(int argc, const char * argv[]) {
    int num = H;
    printf(“%d”,num);
    return 0;
}

示例2 : #undef
宏的定义作用范围从定义开始直到文件结束,或者用#undef终止

#include "stdio.h"
#define H 6//定义宏
int main(int argc, const char * argv[]) {
    int num = H;
    printf("%d\n",num);
#undef H
    int num2 = H;//报错,因为找不到定义的H,并且赋值也是不合法的
    printf("%d\n",num2);
    return 0;
}

示例3 : #define 表达式

#include "stdio.h"
//宏定义表达式时将元素与结果加上(),是因为调用宏时是先复制宏内表达式,而不是复制表达式结果.避免调用后运算错误
#define Pow(num_A,num_B) ((num_A)*(num_B))
int main(int argc, const char * argv[]) {
    int num = Pow(10, 20);
    printf("%d\n",num);
#undef Pow
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Gilgamesho/article/details/50539383
今日推荐