- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 页 PAGE \* Arabic 1
#include
直接按标准目录搜索
“” 先在当前目录搜索,再搜索标准目录
处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译
#if 、 #else
#elif 、 #endif
条件编译指令中最常用的或许是#if,#else,#elif和#endif
#if的一般形式是:
#if constant-expression
? Statement sequence
#endif
#endif标记#if块的结束
例子:
#ifdef COMPUTER_A
#define INTEGER_SIZE 16
#else
# define INTEGER_SIZE 32
#endif
#else指令的作用与C语言的else相似,#if指令失败时它可以作为备选指令
#else既是标记#if块的结束,也标记#else块的开始
每个#if只能写一个#endif匹配
#ifdef --如果已定义
#ifdef的一般形式如下:
#ifdef 标识符
程序段1
#else
程序段2
#endif
当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。
#ifndef --如果未定义
#ifdef的一般形式如下:
#ifndef 标识符
程序段1
#else
程序段2
#endif
作用是当所指定的标识符未被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。它只是第一行与第一种形式不同。这种形式与第一种形式的作用相反#ifndef
#if --如果已定义
#if 的一般形式如下:
#if 常量表达式
程序段1
#else
程序段2
#endif
如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译
#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如#if defined (AAA) defined (BBB)xxxxxxxxx#endif#if defined (AAA) || VERSION 12xxxxxxxxx#endif而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if
#error
使用defined
#line
#pragma
?#和##
预宏定义
#error指令强制编译程序停止编译,
主要用于程序调试
#error指令的一般形式是
#error error-message
注意:
宏串error-message不用双引号包围
?可以自定义错误内容
defined
确定是否定义宏名字的方法
defined操作符的一般形式如
defined macro-name
define与#ifdef:
#if defined MY 或 #ifdef MY
感叹号”!”来反转相应的条件
?#if !defined DEBUG
? Printf(“Final Version!\n”);
#endif
__FILE__
C语言中的__FILE__用以指示本行语句所在源文件的文件名,举例如下(test.c):
#include stdio.h
int main()
{
printf(%s\n,__FILE__);
}
在gcc编译生成a.out,执行后输出结果为:
test.c
在windows的vc6.0下编译执行结果为:
c:\documents and settings\administrator\桌面\test.c
__LINE__
C语言中的__LINE__用以指示本行语句在源文件中的位置信息,举例如下:
#include stdio.h
main()
{
printf(%d\n,__LINE__);
printf(%d\n,__LINE__);
printf(%d\n,__LINE__);
};
该程序在linux用gcc编译,在windows的vc6.0下编译都可以通过,执行结果都为:
7
8
9
还可以通过语句#line来重新设定__LINE__的值,举例如下:
#include stdio.h
#line 200? //指定下一行的__LINE__为200
main()
{
printf(%d\n,__LINE__);
printf(%d\n,__LINE_
文档评论(0)