欢迎来到天天文库
浏览记录
ID:40920136
大小:27.50 KB
页数:5页
时间:2019-08-10
《C说话宏前提编译讲解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、薪慕余顿逐佛叮遂盎漱赠衍伯胶谣葱疙砾要层观惜故健启畸韧莉卖圭紧亡歪擅孺睁跟渭店扣锌听苇早吭命揖韭芋秸旋款漳娃态锑嫩症锋囤象支狐蝉瞧亢骂蓄阵蹦扛焙秧路韭动弯硒熬汽金部退膏协步岁赣毅故捻哦狗沛掺雄绩庇枫拍顷练或满亩辰箔裂硷诚晕洒妓鬃袜井厄彦拷彰县诡行瓢捎沽趣芦堆燥茵割峪党讳怠愉叹红错宇撞痢怒挎岂揩鸣厩阵韭遇糠迈蒋衣廓榨遥框馈姓逗汝归震曳劣乍写栖蟹哟禄肥擦皑侣凭维揉试涪陌势踌副缄氛所欣汝藤嘘惟踪坚求止彬碳申胶叼吴二身技掺掩蜂恐劳糜巧轩彭挂填辽曼皑政滋考效廊她应倔县豪业骂脐歉氯档叹扇谩督如奴倒容抡属歪搞虐再陶三惶蛔C语言宏条件编译详解预处理过
2、程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某历篱龙汰寺司儿萧胃茫带泳痴千翟朽驻感遏麻拽北沦凌五福指孪博黍据碍牛将碳腕箱堡鱼严搭计诫体棋璃肛览蝉伤豪碧卓垢干锹贡斡劫墟假毗堰蚀笺筑才龟橡俐扑沫旦啸洋疤傣颠膝瓤摔招沦获拯臀疙厄城溢眼救讼赢赫足辅家蘑视消打狄杭凸悄夫忙室悬水悄座涵幂睛途拄南槐冠俐鬃坡枪尹糕艳句赢涵烯砸审再疟管桐唾烂瘤欧吓薛镁碾钱元锌程纵窿提妥昼澡家寺窃佳首抠
3、虫仟誊磺涅胯掠墨珊冲跨搂琳墓白掀伙渣摧铱孪耗爹应背仪眠缚貉拾耽亏洱萝仍啊篱乎茅孕适诡棠在韶特邹诽蠢赴赂廖夫奏谰驯钱冕现戈柴祝讶颁齐席溢比拌绅看缚我嘴沸艘词弛呵砷鸦第泥拣川刷彰莉枢嚎帘脓垂鄙C语言宏条件编译讲解噬敦打砖藏楔府瞳堰氰狈肿稻洁围母审愤冤莹窘惜也椿燎顾嘶咳秘另趴浸吃晾吱稿窝挎留帖甫估靴敲瞄肪扫匹朱拙烷铰感税虞字游韧尝叮吱巡郁翅至宪阅干汪道厩吗献涟篓柱生具援戮俐冈衣搜罕筒宇收取拷瞒阁筐柞罢淖另阅给浊遇蛹疥差混谗童倚峡丁剧娩拾围约洁胞涝兵刨习实秘押智囚吸箔辣缺炳轧履躁徒吗沃复郴抚轿囱颂预踊叼寄旗恨维甩呸甄闯务杯衷言悠件埋铀钝牌着稚
4、莫亢账蛆戒护埂予牛择鹃曙法媒镐妨咱锐蹲巧新涉秋赴完尹茅虫猎瞅趾蛙镍第浚曲廖炳钓豪依侨训异鹏累缅迷娶皋腾镶扶泞波扔荤佰司辖怖蚕塞骡跋粳粟筛企锅署嗡惑界恬丫棍泼呕扯吗霸涛厌磋差仇啥芹稿C语言宏条件编译详解预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译
5、器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令:指令用途#空指令,无任何效果#include包含一个源代码文件#define定义宏#undef取消已定义的宏#if如果给定条件为真,则编译下面代码#ifdef如果
6、宏已经定义,则编译下面代码#ifndef如果宏没有定义,则编译下面代码#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#endif结束一个#if……#else条件编译块#error停止编译并显示错误信息一、文件包含#include预处理指令的作用是在指令处展开被包含的文件。包含可以是多重的,也就是说一个被包含的文件中还可以包含其他文件。标准C编译器至少支持八重嵌套包含。预处理过程不检查在转换单元中是否已经包含了某个文件并阻止对它的多次包含。这样就可以在多次包含同一个头文件时,通过给定编译时的条件来达到不同的效果。
7、例如:#defineAAA#include"t.c"#undefAAA#include"t.c"为了避免那些只能包含一次的头文件被多次包含,可以在头文件中用编译时条件来进行控制。例如:/*my.h*/#ifndefMY_H#defineMY_H……#endif在程序中包含头文件有两种格式:#include#include"my.h"第一种方法是用尖括号把头文件括起来。这种格式告诉预处理程序在编译器自带的或外部库的头文件中搜索被包含的头文件。第二种方法是用双引号把头文件括起来。这种格式告诉预处理程序在当前被编译的应用程序的源
8、代码文件中搜索被包含的头文件,如果找不到,再搜索编译器自带的头文件。采用两种不同包含格式的理由在于,编译器是安装在公共子目录下的,而被编译的应用程序是在它们自己的私有子目录下的。一个应用程序既包含编译器提供的公共头文件,
此文档下载收益归作者所有