c语言中的特殊符号.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

sis36 + 关注
实名认证
文档贡献者

大数据工程师持证人

本人从事所爱好的软件研发职业,所选文档部分是选自于网络,之所以选这些文档是因为我很欣赏你的思维和才华,特此给我们大家以分享和学习的机会。如果你感觉侵犯了你的利益,请和我联系,我会尽快的删除!谢谢!

领域认证该用户于2024年03月25日上传了大数据工程师

1亿VIP精品文档

相关文档