跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:preprocessor
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 预处理概览(Preprocessor) ====== === 基本定义 === 预处理指令以#开头,标准C允许#的前后可以有空白字符,但旧的编译器可能不允许这么做。 如果一行中只有#一个非空白字符,标准C当作空白行处理。 在标准C中,**预处理行在宏扩展(macro expansion)之前识别**。所以,如果宏的扩展结果是预处理指令,则这条指令将不会被预处理器发现。如: <code c> #define GETIO #include <stdio.h> GETIO int main(void) { printf("hello, world!\n"); } </code> 这可不等于经典的“hello, world”程序。经过预处理后,“#include <stdio.h>”仍旧在C源程序中(就好像没经过预处理一样),传递给编译器,从而编译时出错! 在词法(Lexical)部分提到过:预处理指令可以用\续行,注释中间的行结束符也不会中断预处理指令。 宏在注释、字符常量、字符串常量和#include中的文件名里不会被识别。 === 预处理命令列表 === |#define |定义宏 | |#undef |取消宏定义 | |#include |包含头文件 | |#if |条件编译 | |#ifdef |::: | |#ifndef |::: | |#elif |::: | |#else |::: | |#endif |::: | |#line |显式设定宏%%__LINE__%%和%%__FILE__%% | |defined |宏(参数)定义返回1,否则返回0 | |#operator |参数字符串化 | |##operator |符号合并 | |#pragma |设定依赖于实现的编译指示 | |#error |产生一个编译错误 | {{tag>C语言}}
computer/c/tips/preprocessor.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部