#ifdef,#else,#endif,#if用法详解

#ifdef,#else,#endif,#if用法详解

ID:40721780

大小:37.50 KB

页数:4页

时间:2019-08-06

#ifdef,#else,#endif,#if用法详解_第1页
#ifdef,#else,#endif,#if用法详解_第2页
#ifdef,#else,#endif,#if用法详解_第3页
#ifdef,#else,#endif,#if用法详解_第4页
资源描述:

《#ifdef,#else,#endif,#if用法详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#ifdef,#else,#endif,#if用法详解预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况:1:情况1:#ifdef_XXXX...程序段1...#else...程序段2...#endif这表明如果标识符_XXX

2、X已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。例:#defineNUM.......................................#ifdefNUMprintf("之前NUM有过定义啦!:)");#elseprintf("之前NUM没有过定义!:(");#endif}如果程序开头有#defineNUM这行,即NUM有定义,碰到下面#ifdefNUM的时候,当然执行第一个printf。否则第二个printf将被执行。我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。2:情况2:#ifndef_XXXX...程序段

3、1...#else...程序段2...#endif这里使用了#ifndef,表示的是ifnotdef。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。3:情况3:#if常量...程序段1...#else...程序段2...#endif这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。我认为,这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。#ifdef#ifndef等用法文件中的#ifndef头件的中的#ifndef,这是一个

4、很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:#ifndef<标识>#define<标识>............#endif<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h#ifndef_STDIO_H_#d

5、efine_STDIO_H_......#endif2.在#ifndef中定义变量出现的问题(一般不定义在#ifndef中)。#ifndefAAA#defineAAA...inti;...#endif里面有一个变量定义在vc中链接时就出现了i重复定义的错误,而在c中成功编译。结论:(1).当你第一个使用这个头的.cpp文件生成.obj的时候,inti在里面定义了当另外一个使用这个的.cpp再次[单独]生成.obj的时候,inti又被定义然后两个obj被另外一个.cpp也include这个头的,连接在一起,就会出现重复定义.(2).把源程序文件扩展名改成.c后,VC按照C语言的语

6、法对源程序进行编译,而不是C++。在C语言中,若是遇到多个inti,则自动认为其中一个是定义,其他的是声明。(3).C语言和C++语言连接结果不同,可能(猜测)时在进行编译的时候,C++语言将全局变量默认为强符号,所以连接出错。C语言则依照是否初始化进行强弱的判断的。(参考)解决方法:(1).把源程序文件扩展名改成.c。(2).推荐解决方案:.h中只声明externinti;在.cpp中定义#ifndef__X_H__#define__X_H__externinti;#endif//__X_H__inti;注意问题:(1).变量一般不要定义在.h文件中。ifndef/defin

7、e/endif的用法与实例分析用法:.h文件,如下:#ifndefXX_H#defineXX_H……#endif这样如果有两个地方都包含这个头文件,就不会出现两次包含的情况,因为在第二次包含时XX_H已经有定义了,所以就不再include了。-------------------------------------------------------------------------------------------------------------------------------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。