预处理指令

由ANSI的标准规定, 预处理指令主要包括:
     #define
     #error
     #if
     #else
     #elif
     #endif
     #ifdef
     #ifndef
     #undef
     #line
     #pragma
    由上述指令可以看出, 每个预处理指令均带有符号"#"。下面只介绍一些常
用指令。
    1. #define 指令
    #define指令是一个宏定义指令, 定义的一般形式是:
     #define 宏替换名字符串(或数值)
    由#define指令定义后,  在程序中每次遇到该宏替换名时就用所定义的字符
串(或数值)代替它。
    例如: 可用下面语句定义TRUE表示数值1, FALSE表示0。
     #define TRUE 1
     #define FALSE 0
    一旦在源程序中使用了TRUE和FALSE, 编译时会自动的用1和0代替。
    注意:
    1. 在宏定义语名后没有";"
    2. 在Turbo C程序中习惯上用大写字符作为宏替换名, 而且常放在程序开头。
    3. 宏定义还有一个特点, 就是宏替换名可以带有形式参数,  在程序中用到
时, 实际参数会代替这些形式参数。
    例如:
     #define MAX(x, y) (x>y)?x:y
     main()
     {
          int i=10, j=15;
          printf("The Maxmum is %d", MAX(i, j);
     }
    上例宏定义语句的含义是用宏替换名MAX(x, y)代替x, y中较大者,  同样也
可定义:
     #define MIN(x, y) (x<y)?x:y
    表示用宏替换名MIN(x, y)代替x, y中较小者。

    2. #error指令
    该指令用于程序的调试, 当编译中遇到#error指令就停止编译。其一般形式
为:
     #error 出错信息
    出错信息不加引号, 当编译器遇到这个指令时, 显示下列信息并停止编译。
      Fatal: filename linename error directive

    3. #include 指令
       #include 指令的作用是指示编译器将该指令所指出的另一个源文件嵌入
#include指令所在的程序中, 文件应使用双引号或尖括号括起来。Turbo C 库函
数的头文件一般用#include指令在程序开关说明。
    例如:
     #include <stdio.h>
    程序也允许嵌入其它文件, 例如:
     main()
     {
          #include <help.c>
     }
    其中help.c为另一个文件, 内容可为
       printf("Glad to meet you here!");
    上例编译时将按集成开发环境的Options/Directories/Include directories
中指定的包含文件路径查找被嵌入文件。
 
    4. #if、#else、#endif指令
    #if、#els和#endif指令为条件编择指令, 它的一般形式为:
     #if 常数表达式
          语句段;
     #else
          语句段;
     #endif
    上述结构的含义是: 若#if指令后的常数表达式为真, 则编译#if到#else 之
间的程序段; 否则编译#else到#endif之间的程序段。
    例如:
     #define MAX 200
     main()
     {
          #if MAX>999
               printf("compiled for bigger\n");
          #else
               printf("compiled for small\n");
          #endif
     }
 
    5. #undef指令
    #undef指令用来删除事先定义的宏定义, 其一般形式为:
     #undef 宏替换名
    例如:
      #define TRUE 1
       ...
      #undef TURE
    #undef主要用来使宏替换名只限定在需要使用它们的程序段中。


 

转载于:https://www.cnblogs.com/0000/archive/2009/11/11/1600979.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC字体

GDI字体分3类&#xff1a;点阵字体&#xff08;raster font&#xff09;、笔画字体&#xff08;stroke font&#xff09;和Truetype字体。 默认点阵字体有7种&#xff1a; System &#xff08;用于SYSTEM_FONT&#xff09; 无衬线 西方 有衬线 gb2312…

decimal double java_Java BigDecimal和double BigDecimal类

BigDecimal类对于不需要任何准确计算精度的数字可以直接使用float或double&#xff0c;但是如果需要精确计算的结果&#xff0c;则必须使用BigDecimal类&#xff0c;而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表11-15所示。表11-15 BigDecimal类的常…

python自然语言处理案例-Python自然语言处理 NLTK 库用法入门教程【经典】

本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 在这篇文章中&#xff0c;我们将基于 Python 讨论自然语言处理&#xff08;NLP&#xff09;。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的&#xff0c;用于自…

分享45套2011年和2012年的高质量免费网站模板

日期&#xff1a;2012-11-11 来源&#xff1a;GBin1.com 前端时间我们分享了12套超酷的后台管理员界面网站模板&#xff0c;相信看过的朋友肯定已收入囊中了&#xff0c;今天呢&#xff0c;我们继续推荐45套高质量的免费网站模版&#xff0c;相信如果需要自己搭建网站的朋友肯…

基于PageRank的作弊检测算法

Spam Rank TrustRank Topical TrustRank Anti-Trust Rank HostRank BadRank 转载于:https://www.cnblogs.com/youwang/archive/2009/11/12/2310659.html

使用log4j日志-配置载入问题

1.在eclipse中&#xff0c;把log4j.properties放在类路径下&#xff0c;在项目启动时就会自己主动载入。2.在idea中。把log4j.properties放在类路径下&#xff0c;可是项目启动时不能直接载入&#xff08;原因不明白&#xff0c;哎&#xff0c;这个让我纠结了一下午&#xff01…

水晶报表中对某一栏位值进行处理_【节能学院】能耗管理系统在某超市嘉兴店二期工程的设计与应用...

摘要&#xff1a;随着社会生活水平的提高&#xff0c;经济的繁荣发展&#xff0c;人们对能源的需求逐渐增长&#xff0c;由此带来的能源危机日益严重。学校建筑如何实时的了解、分析和控制学校的能源消耗已成为需要解决的迫在眉睫的难题。传统的能源消耗智能以月/季度/年为周期…

python数据分析天气预报论文_用python+sklearn(机器学习)实现天气预报数据 模型和使用...

项目地址系列教程0.前言在上一篇教程里我们已经获取了所需要的全部数据&#xff0c;包括训练数据集和测试数据集&#xff0c;使用ProcessData()调用&#xff0c;所以接下来写模型的建立和预测1.建立模型没段代码在文章后面都会整合成一段&#xff0c;分段展示只是便于阅读a.准备…

偶然在网上看到的题目,jQuery功底如何一测便知晓!!!!!!

笔者最终实现的效果如下&#xff1a;    参考答案下载地址 通过手写html代码实现如图效果&#xff1a;以下题目全部使用jQuery来做 当点击“加载数据”按钮时根据提供的数据通过jQuery动态创建表格数据填充该表格。数据见data.txt文件。效果如图&#xff1a; 当点击“设置样…

何为生气

天下有不如意事&#xff0c;不当忿激与争。   ———陈于陛   生活中经常有人为一些小事而生气&#xff0c;其实他们也不想这样做&#xff0c;但就是控制不了自己的心情。生气不但影响了自己的身心健康&#xff0c;而且还影响到周围的人际关系。   从前&#xff0c;有个妇…

ps作业素材和成品_没有用过PS的画框工具,你还敢说你是设计大佬?

大家好&#xff0c;过完春节大伙们都踏上了离乡的征程&#xff0c;再多不舍&#xff0c;看看自己的钱包&#xff0c;还是要出发&#xff01;2019年已经悄然过去一个半月&#xff0c;你的学习计划开始了嘛&#xff1f;来吧继续学习PS-cc2019,今天继续给大家带来CC2019 ps 的基础…

isfile java_isfile 方法

检验给出的路径是否是一个文件:os.path.isfile() 6.检验给出的路...从零开始-JSP动态网页制作基础培训教程 6、判断是文件还是文件夹 使用File类对象的isFile()方法(返回True表示 为文件)和isDirectory()方法(返回True表示为文 件夹......A、 FileReader B、BufferedReader C、…

第二次阅读作业

No Silver Bullet - Essence and Accidents of Software Engineering&#xff1a; 银弹能杀死狼人。如果我没记错的话&#xff0c;在漫画中柯南对黑暗组织而言就是一颗银弹。生活中是不是真的有银弹我还是不太确定。假如有&#xff0c;银弹就是 一点弱点也没有么&#xff1f;如…

Linux 每日一练习!!反单引号·(键盘上数字1左边)··

2019独角兽企业重金招聘Python工程师标准>>> ls -al locate ls # 说明locate ls执行出来的路径将会作为ls -al的参数 说明&#xff1a;在一串指令中&#xff0c;在之内的指令将会被先执行&#xff0c;而且执行出来的结果将作为外部的输入信息 转载于:https://my.osc…

订单不断,我是这样做的

为什么同样是上网,同样是做生意,可是有人单都做不完,有人却接不到订单,这是为何呢?我从去年下半年一路走来,虽说一年多了,大的成绩没什么,可还算可以吧.比上不足,比下还是有余.最先接触电子商务平台的是阿里.然后就是化工报价网www.chembj.com了.再者其他的一些网站.好了,闲话…

python迭代器使用_python迭代器的使用方法实例

什么是迭代器&#xff1f;迭代器是带有next方法的简单对象&#xff0c;当然也要实现__iter__函数。迭代器能在一序列的值上进行迭代&#xff0c;当没有可供迭代时&#xff0c;next方法就会引发StopIteration 的异常。python中有很多的对象都是迭代器&#xff0c;例如&#xff1…

docker-compose观察实时日志_大数据项目实战之在线教育(03实时需求) - 十一vs十一...

第1章Spark Streaming概念 Spark Streaming 是核心Spark API的扩展&#xff0c;可实现实时数据的可扩展&#xff0c;高吞吐量&#xff0c;容错处理。数据可以从许多来源(如Kafka,Flume,Kinesis,或TCP套接字)中获取&#xff0c;并可以使用高级函数进行处理&#xff0c;处理完后的…

代码之谜(二)- 语句与表达式

虽然文章标题是『语句与表达式』&#xff0c;在这篇文章中&#xff0c;我将陈述一个观点 每个表达式都有一个值。 在此之外&#xff0c;也会继续表述这个『代码之谜』系列的主题——数学与计算机之间被经常忽略的矛盾。 简单的讲 “表达式”&#xff08;expression&#xff09;…

Java动态加载类在功能模块开发中的作用

Java中我们一般会使用new关键字实例化对象然后调用该对象所属类提供的方法来实现相应的功能&#xff0c;比如我们现在有个主类叫Web类这个类中能实现各种方法&#xff0c;比如用户注册、发送邮件等功能&#xff0c;代码如下&#xff1a; 1 /*2 * web功能实现类3 */4 public c…

创业者们的19个Surprises

郑昀玩聚SR 20091115 『毫无疑问&#xff0c;短跑运动员在起跑时速度最快&#xff0c;而后就变慢下来&#xff0c; 获胜者是变慢得最少的那个人。大多数创业公司也是如此。』 ——Paul Graham January 2007 上面这句笺言的作者Paul Graham最近问了Y Combinator旗下创业项目的创…