免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 801 | 回复: 0
打印 上一主题 下一主题

C预处理器使用说明 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-20 16:56 |只看该作者 |倒序浏览
用的预处理指令:#include #define #ifdef ,#else ,#endif ,#ifndef ,#if , #elif , #line , #error,#pragma
编译程序的第一步
对程序进行预处理前,编译器会对他进行几次翻译处理 【对于程序员来说知道这些细节,非常有帮助】,编译器首先将这些源代码中出现的字符映射到源字符集 , 改过程处理多字节字符 和 一些相关的国际化的三元字符扩展
编译程序的
第二步, 编译器查找反斜杠后面紧跟换行符的的实例并删除这些实例 ,接着 将注释由空格符替换掉 。
几个相关命令的介绍
明显常量 #define
该指令的长度, 仅限于一行 ,当然可以扩展物理行 , 这些在预处理前,会被转化成逻辑行 ;如下所示:
#define XANDERNAME "YIHUI\
IS A HERO"
#define NUM 2

个#define行 由三部分构成 , 第一个就是 define 命令 , 第二个 是缩略语 ,也就是常说的
宏,宏的名字中不允许有空格,必须遵循C变量命名规则 。 第三部分 称谓替换列表 , 也就是 替换的主体部分 。 从宏 到 把程序中的宏被替换
,这个过程称谓 宏展开 。
注意的地方 :
#define NAME 'XANDER' 与 #define NAME "XANDER" 的区别 , 这种区别 就是 字符 与字符串的区别 , 字符串后面会被追加'\0' 空字符 。
在#define中使用参数
可以创建外形和作用都与函数相似的类函数宏 ,宏的参数也用圆括号括起来 ,定义方法如下:
#define SUM(X) X*X
下面一个宏说明 其使用方法:
#difine SOURCE(X) X*X;
printf("the num is , %d" , SOURCE(2)) ;
类函数宏 与 函数的选择

与函数的选择需要考虑程序的时间和空间情况 , 如果在程序中使用宏20次 , 宏产生内联代码 , 会把代码载入20次 ,而使用函数20次,
仅产生一次函数的拷贝 。使用宏的一个优点是 宏不考虑参数的类型 , SOURCE(x)中的x可以是INT型的也可以是float型的 。
#include指令

指令在web程序的设计中常常用到, 在c中的用法跟那差不多 , 就是载入 你要包含的代码文件 ,像是你手动把代码键入到你要载入的文件里面一样
。 #include 预处理指令有两种定义形式 , #include  第二种是 #include
"myfile.h", 在unix中这两种的区别是告诉预处理器在标准系统目录中寻找文件, 而 "" 则首先寻找当前目录 。
列出一些c标准预处理宏:
__DATE__ 进行预处理的日期, __FILE__代表当前源代码文件名的字符串  , __LINE__行号常量,__TIME__源文件的编译时间,格式为"hh:mm:ss"
内联函数
使用内联函数可能简化函数的调用机制 , 但也可能不起作用 ;
创建内联函数的方法是在函数声明中使用函数说明符inline, 如下:
#include
inline  void call(void){
printf ("my phonenumber is  1348888888");
}
int  main(void){
call();
}

译器看到内联声明后 ,会用call的函数体去替代 main中的函数调用 ,如同你之前键入到main中一样,需要注意的地方是
,编译器对内联函数进行优化时 , 需要知道函数体的内容
,这意味着内联函数的定义和对该函数的调用必须在同一文件内,也就是内联函数通常具有内部链接 。 使用方法一般是在头文件中声明并定义
,然后将该文件包含到可执行代码中去 。
原文链接:http://www.kuaishi.net/node/186 转载自快拾网
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69549/showart_696024.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP