码迷,mamicode.com
首页 > 其他好文 > 详细

预处理指令

时间:2017-04-07 23:43:50      阅读:404      评论:0      收藏:0      [点我收藏+]

标签:函数   char   定义   结构   避免   one   效率   nbsp   指令   

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
3 int 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*b int 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)

 

预处理指令

标签:函数   char   定义   结构   避免   one   效率   nbsp   指令   

原文地址:http://www.cnblogs.com/jiaoxuanwen/p/6667572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!