- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
1、->在c语言中是什么意思?
2、c语言中的星号“*”
3、#ifdef
条件编译命令最常见的形式为:
1
2
3
4
5
#ifdef?标识符
//程序段1
#else
//程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
其中#else部分也可以没有,即:
1
2
3
#ifdef?标识符
//程序段1
#endif
这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译:
1
2
3
4
5
#ifdef?WINDOWS
#define?MYTYPE?long
#else
#define?MYTYPE?float
#endif
如果在Windows上编译程序,则可以在程序的开始加上
1
#define?WINDOWS
这样则编译下面的命令行:
1
#define?MYTYPE?long
如果在这组条件编译命令之前未出现以下命令行:
1
#define?WINDOWS
则预编译后程序中的MYTYPE都用float代替。这样,源程序可以不必作任何修改就可以用于不同类型的计算机系统。当然以上介绍的只是一种简单的情况,可以根据此思路设计出其它的条件编译
4、#ifndef:这是"ifnotdefined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等。实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的第三种----条件编译。
#definex//定义一个宏
...
#endif
//C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。
#ifndefx?//先测试x是否被宏定义过
#definex
程序段1//如果x没有被宏定义过,定义x,并编译程序段1
#else
程序段2//如果x已经定义过了则编译程序段2的语句,“忽视”程序段1。
#endif//终止if
5、#if:#if和#endif是一组同时使用的,叫做条件编译指令。#if与#define、#include等指令一样是由预处理器这个强大的工具处理的,预处理器可以在编译前处理c程序。
使用条件编译指令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。
例如:
#defineLEN_MAX3
#defineLenMax6
#ifLEN_MAX<LenMax
#undefLEN_MAX
#defineLEN_MAXLenMax
#endif
定义了LEN_MAX和LenMax,如果LEN_MAX<LenMax成立为真,则取消LEN_MAX的定义,重新定义LEN_MAX,也就是说LEN_MAX等于6。这时预处理器会保留中间程序(#if与#endif行会消失),让编译器编译中间行。
如果LEN_MAX<LenMax不成立,预处理器会将删除#if到#endif中的程序(包括#if与#endif行),则编译器会看不到中间的程序。
这样的处理不会在目标代码中占用空间,减少程序运行时间。它可以用于程序调试使用。
6、#undef:取消以前定义的宏定义;取消在先前程序中对预处理器的定义。
例子1:
#include<iostream.h>
#include<string.h>
#defineMAX5
#undefMAX
voidmain()
{
charname[MAX]="abcd";//只能用abcd,否则会提示说超出长度,原因是由于"\0"字符
cout<<"MAX="<<MAX<<endl;
for(inti=0;i<MAX;i++)
cout<<name<<""<<endl;
}
得到如下错误消息:
未定义符号'MAX'
初始值设定项太多
在此程序中对MAX定义后又取消了定义。编译该程序时报错。由于未定义MAX,charname[MAX]的数组大小不可用,因此编译器发出第二个错误消息。
例子2:
#defineTEST_A1
#defineTEST_CLASS_AclaseT1
#include"TEST.h"
#undefTEST_A
#undefTEST_CLASS_A
在文件#include"TEST.h"中宏定义#defineTEST
文档评论(0)