首页 > 代码库 > 预处理指令
预处理指令
1、预处理指令即编译之前执行的指令
C中的预处理指令包括:文件包含,宏定义,条件编译
2、文件包含
#include <stdio.h>
<>和""的区别#include <file_1.h> //直接在C库函数头文件所在目录下找#include "file_1.h" //先在main.c所在目录下找,若无到环境变量path路径中找,若无,到C库函数头文件所在目录中找
#include可能会导致重复包含文件,降低编译效率解决方法:1、清晰目录结构,避免重复包含2、在每个头文件中都使用条件编译
避免头文件重复包含#ifndef one_h#define one_h#include <stdio.h>#endif
注意:
#include指令允许嵌套包含,单不允许递归包含(即a.h包含b.h,b.h同时包含a.h)所有预处理指令以#开头,结尾没有;3、宏定义宏定义一个常量实例:替换数组长度#define ARRAY_NUM 3int array_1[ARRAY_NUM] = {3, 1, 9}; for (int i = 0; i < ARRAY_NUM; i++) { printf("%d\n", array_1[i]); } char str[] = "ARRAY_NUM HAHAH";printf("%s\n", str);宏定义会替换代码中所有没有被""括住的代码
宏定义一个函数#define fun_1(a, b) a+b
int result = fun_1(9, 10);printf("%d", result);注意:宏定义只会替换代码,不会做计算#define fun_1(a, b) a*bint result = fun_1(9+1, 10+1);4、条件编译条件编译不能用main函数中的信息做判断,main函数只有在运行期才会执行,一般条件编译的判断使用宏定义的常量进行判断#define NUM -1#if !defined(NUM) //如果没有定义NUM宏 #if NUM > 0 printf("NUM大于0"); #elif NUM == 0 printf("NUM等于0"); #else printf("NUM小于0"); #endif#endif条件编译的两种写法#ifdef NUM#if defined(NUM)#ifndef NUM#if !defined(NUM)
预处理指令
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。