C语言预处理器是个简单的的宏处理器,预处理器用特殊的命令行控制,这些命令行以#开头,不包含预处理器命令的行称为源程序文本行。预处理器通常从源文件中删除所有预处理器命令行,并按预处理器命令指示对源文件进行其它转换,然后,得到的经过预处理的源文本成为有效C语言程序。
下面是常见的预处理器命令:
#define——定义预处理器宏,如果是函数式宏定义,左括号与宏名之间不能有空格,所有参数及整个宏替换最...
分类:
编程语言 时间:
2015-04-08 11:00:34
阅读次数:
236
标准C语言中包括一组三字符组,使C语言程序可以只用ISO
646-1083不变代码集编写,这是七比特ASCII代码集的子集,是许多非英语国家字符集公用的代码集。三字符组以两个连续问号开头,见上图。标准C语言还提供一些记号的重拼和定义一些运算符的宏替换的头文件,但与三字符组不同的是,这些替换无法在字符串型常量和字符型常量中识别。
源程序中三字符组的转换发生在词法分析(转换为记号)之前和识别字符...
分类:
编程语言 时间:
2015-04-04 09:24:13
阅读次数:
241
内联函数从源码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。应注意如下几点: 1...
分类:
编程语言 时间:
2015-04-03 09:10:08
阅读次数:
172
#include
#include
#define PI 3.14
/*
PI是符号常量,不开辟空间,只是个临时符号
宏的本质是:替换
*/
int main()
{
double result;
int r = 3;
result = r*r*PI;
cout<<result<<endl;
return 0;
}
关于程序运行过程如下图所示
下面介绍打开".i"...
分类:
其他好文 时间:
2015-03-21 09:55:56
阅读次数:
123
宏是C编译系统的预处理,何谓“预”?即是正式工作开始之前的准备工作。所以宏替换是在对程序编译之前进行的~也就是直接将宏定义的字符,转换成后面的表达式。逗号表达式:逗号运算符,优先级别最低,它将两式联接起来,可连续执行代码:直接对文件输出1-1000的数字#include #define B P,P,...
分类:
其他好文 时间:
2015-03-17 00:23:47
阅读次数:
116
1.定义顺序的无关性 #define PI 3.14 #define TWO_PI 2*PI 这两句谁前谁后无所谓,因为预处理器不断迭代来实现宏替换,直到源文件中没有宏了才停止。2. 宏变量变成字符串 #define str(x) #x 例子:str (teststring) ==> "tests....
分类:
编程语言 时间:
2015-03-15 10:53:29
阅读次数:
143
Block(oc 的数据类型,很常用,本质是c结构体)类似内联函数,从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名Block封装了一段代码,可以在任何时候执行Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。苹...
分类:
其他好文 时间:
2015-03-04 23:57:14
阅读次数:
181
用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb;//这多数不符合我们的意图,它只声明了一个指向字符变量的指针,//和一个字符变量;以下则可行:typedef char* PCHAR;PCHAR pa, pb;这种用法很有用,特别是c...
分类:
其他好文 时间:
2015-02-26 13:00:44
阅读次数:
154
C陷阱与缺陷
1. typedef用法:
①
定义一种类型别名,而不是简单的宏替换:
char *pa,pb;(注意:pb并没有定义为指针,虽然你可能想这么定义它)
typedef char* PCHAR
PCHAR pa, pb;
② 用在旧的C代码中,帮助struct。以前的代码中,声明struct新对象时,必须带上struct,即形式为:struc结构名对象名,如...
分类:
其他好文 时间:
2015-02-08 15:29:13
阅读次数:
195
C预处理器目录概述文件包含宏替换条件包含概述预处理器是编译过程中单独执行的第一个步骤文件包含#include "文件名" / #include 注:文件包含将被替换为由文件名指定的文件内容如果某个包含文件的内容发生了变化,那么所有依赖于该包含文件的源文件都必须重新编译宏替换书写格式:#define ...
分类:
其他好文 时间:
2015-02-03 22:32:13
阅读次数:
165