C语言第八章编译预处理

编译预处理-条件编译

//#include命令:预编译命令,作用就是将某些文件包含到用户的源文件中来,也就相当于把某个文件中的内容原封不动的贴到#include这个位置
//标准的I/O库:stdio.h叫头文件 
#include <stdio.h>//<>就是去系统目录中找头文件 所以像标准的收stdio.h头文件就用<> 
#include <stdlib.h>
//""就是现在当前目录中查找,如果找不到,再到系统目录查找 ""就是用于自己写的头文件
#include "head.h"//相当于 #define PI 3.1415926

//#define DEBUG 后面不写1 也算是被定义过了
#define DEBUG 1
#define RELEASE
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char *argv[]) {//主函数 
	
	//1:文件包含
	//将另外的一个文件的内容包含到文件中 我们通过#include命令来实现 一般格式:
	//#include "文件名" 
	//#include 常用于其他.h文件(head) -- 头文件 
		//我们常常把宏定义 函数说明 甚至一些其他的#include命令 以及其他一些全局变量的外部声明等等放在头文件中
	
	printf("%f\n",PI);
	printf("%f\n",DPI);
	
	//说明:
	//1 很多公共修改都是可以放到head.h中 但是你一旦修改了这个.h文件也就相当于修改了#include这个头文件的.cpp文件
		//那么这些.cpp文件会对其进行重新编译 
	//2 一个i#nclude只能包含一个文件 如果要包含读个文件 那就多写几个#include 
	//3 文件包含是可以嵌套的 就是说建一个 head2.h 把#include"head2.h"写在head.h的文件中去 
		//#include本质上就是把另外一个文件中的内容 搬到本文件中来 
	//4 #include包含文件 可以用"" 也可以用<> 用法不一样 
	
	
	//2:条件编译:
	//对其中的一部分代码进行编译 而不是对所有的代码进行编译 
	//几种形式:
	//形式1:当被标识符定义过(#define),则对程序段1进行编译,否则对程序段2进行编译 #else这部分可以没有 
//	#ifdef 标识符
//		程序段1(一堆代码) 
//	#else
//		程序段2
//	#endif 
	
	//这里就看debug是不是被#define过了 if定义过了 则: 
	#ifdef DEBUG
	 	//...
	 	printf("x = ,y=.....\n"); 
	 	
	#endif 
	
	//形式2:当标识符没有被定义过(#define) 则对程序段1进行编译 否则对程序段2进行编译 跟上面的一样#else这部分可以没有 
//	#ifndef 标识符
//		程序段1(一堆代码) 
//	#else
//		程序段2
//	#endif 
	//此处没有定义这个定义 则就会打出程序段1 
	//上面定义的话 则就不会打印出程序段1 
	#ifndef RELEASE
	    printf("打印一些调用信息!\n"); 
	#endif 
	
	//形式3 当指定的表达式值为真(非0)时就编译程序段1,否则编译程序段2,所以我们事先给定一定的条件 就可以使程序不同条件下实现不同的功能 
	//	#if 表达式 
//		程序段1(一堆代码) 
//      #elif 表达式2
//		程序段2 
//	#else //如果前面都不成立则编译程序段3 
//		程序段3
//	#endif
	
	#if PI	//PI=0时则执行程序2 PI=1时则执行程序1 
		printf("PI is defined"); 
	#else
		printf("PI is not defined"); 
	#endif
	
	//条件编译的好处
	//1条件编译可以减少生成目标文件的长度
	//2大家以后开发面临跨平台问题 为了增加程序的移植性 增加程序的灵活性 我们就必须采用条件编译 
	
	return 0;  
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值