#ifndef_code_#endif简析
2016-08-09 22:00
267 查看
首先做一下区分
和
这两段代码的意义是不同的,作用也是稍有差异!
1. 第一种代码段的意义简介
一般情况下的话,源代码中的所有都是参加编译的。有些时候程序猿们想只对其中的一部分当满足某种条件是才编译,于是
便应运而生,也就是“条件编译”。它的作用是:当标识符已经被定义过(一般也是用#define命令定义的),则对code1进行编译,否则编译code2。
其中#else部分也可以没有,但使用情景相同即:
第二种代码的意义简介
在头文件中使用#ifndef是非常重要的,主要是防止双重定义的错误。如果在头文件中a.h种定义了一个类a:
如果两次#include “a.h”就会出错,因为相同的类不能定义两次。运用#ifndef就可以解决此类问题。
因为当你已经包含过这个文件,标识符就会有了定义,那么#ifndef的条件为假,就不会再执行后面的类定义了。(#ifndef和#endif必须成对出现)
还有一点需要清除的是:
这里的<标识>在理论上来说是自由命名的,但是每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线。例如stdio.h->
程序猿在调试中使用
一般程序在调试期间会写很多调试代码,而这些代码在加氟阶段是不需要的,由于调试代码多而杂,分布有时连写它的程序猿都不能查找全面。
运用这段代码就可以解决这一劳民伤财的问题。具体我就不多说了!大家可以自行领悟!
做一下笔记,以备忘!
#ifdef _DEFINE_ code1 #else code2 #endif
和
#ifndef _NOT_DEFINE_ #define _NOT_DEFINE_ code #endif
这两段代码的意义是不同的,作用也是稍有差异!
1. 第一种代码段的意义简介
一般情况下的话,源代码中的所有都是参加编译的。有些时候程序猿们想只对其中的一部分当满足某种条件是才编译,于是
#ifdef 标识符 code1 #else code2 #endif
便应运而生,也就是“条件编译”。它的作用是:当标识符已经被定义过(一般也是用#define命令定义的),则对code1进行编译,否则编译code2。
其中#else部分也可以没有,但使用情景相同即:
#ifdef code1 #endif
第二种代码的意义简介
在头文件中使用#ifndef是非常重要的,主要是防止双重定义的错误。如果在头文件中a.h种定义了一个类a:
class a { };
如果两次#include “a.h”就会出错,因为相同的类不能定义两次。运用#ifndef就可以解决此类问题。
#ifndef _A_
#define _A_
class a { };
#endif
因为当你已经包含过这个文件,标识符就会有了定义,那么#ifndef的条件为假,就不会再执行后面的类定义了。(#ifndef和#endif必须成对出现)
还有一点需要清除的是:
#ifndef <标识> #define <标识> ... #endif
这里的<标识>在理论上来说是自由命名的,但是每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线。例如stdio.h->
_STDIO_H_。
程序猿在调试中使用
一般程序在调试期间会写很多调试代码,而这些代码在加氟阶段是不需要的,由于调试代码多而杂,分布有时连写它的程序猿都不能查找全面。
#define _DEBUG_ #ifdef _DUGBU_ code #endif
运用这段代码就可以解决这一劳民伤财的问题。具体我就不多说了!大家可以自行领悟!
做一下笔记,以备忘!
相关文章推荐
- 新一代跨平台C++开发工具Code::Blocks简介
- linux:install codeblocks
- WPF CodeBehind 草稿
- Codeforces Round #253 (Div. 1) A Borya and Hanabi
- HTTP状态码->HTTP Status Code
- NDK_omxcodec
- WDS服务不能启动-----Service-specific error code 1056767740
- 矩形周长(codevs 2149)
- 【Codeup】1935: 查找学生信息
- VScode扩展插件推荐与备忘
- CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO)
- Eclipse启动报错(JVM terminated. Exit code=-1)
- math_code_LevenbergMarquardt_Analytical
- [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏
- Codevs 1378 选课
- There was an internal api err.. & The entitlements specified in your application’s Code Signing...
- CodeChef 2016年7月问题
- visual studio code jupyter错误!No kernel specs found
- CODE[VS]1023 GPA计算
- Code to download files from google drive to colab