[C/C++] #ifdef和#endif】的更多相关文章

2016年12月29日更新: 今天查看以前文件的时候, 突然发现了#error 这个预处理指令.然后回想一下工作, 发现这个指令使用场景还是很多的.比如: 一个项目的模块儿之多,源文件之大,代码之多,那么其中的宏, 也会很多. 免不了冲突定义.这时候, 我们就需要编译器能及早的告诉我们.那就是在编译的时候.#error就可以这么实现: /** 如果JOE宏没有定义,那么编译就此结束, 编译器就会显示红色的错误 */ #ifndef JOE #error "JOE is not exits&quo…
转于 http://www.cnblogs.com/renyuan/archive/2013/05/22/3092362.html 今天笔试的时候遇到这个问题,整理一下! 一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符  程序段1  #else  程序段2…
这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入"extern "C"{" 和 " }"处理其中的代码,其中{ }内部的代码是通过extern"C"进行处理.要明白为何使用extern"C",还得从cpp中对函数的重载处理开始说起.在c++中,为了支持重载机制,在编译生…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #ifdef 程…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.   关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1:#ifdef _XXXX...程序段1...#else...程序段2…
预编译就是在对源文件进行处理之前(如在语法扫描和分析之前),先处理预处理部分,精简代码,然后再进行编译. 预处理命令有:#include 文件包含.#define 宏定义.以及要重点讲的#if.#ifdef.#else.#endif.#ifndef 条件编译.这里讲的是条件编译. 条件编译,分下面三种情况: 一. #ifdef_XXXX 程序段1 #else 程序段2 #endif 表示的是,如果XXXX被宏定义过,即 if (#define XXXX),则执行程序段1,否则执行程序段2,执行后…
本文转自博文C/C++预处理指令#define,#ifdef,#ifndef,#endif….这篇博文写得特别好,特转载. 本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #en…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短. 关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1: #ifdef _XXXX ...程序段1... #else ...程序段…
转自:http://www.kuqin.com/language/20090806/66164.html 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器对源代码进行处理. 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件.定义宏.根据条件决定编译时是否包含某些代码.要完成这些工作,就需要使用预处理程序.尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的.预处理过程读入源代码,检查包含预处理指令的语句…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符 //程序段1 #else //程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有. 在头文件中使用#ifd…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.  关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1: #ifdef _XXXX ...程序段1... #else ...程序…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符  程序段1  #else  程序段2  #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2.  其中#else部分也可以没有,即:  #i…
1.条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #ifdef 程序段1 #endif 2.条件编译命令另一种形式: #ifndef 标识符 程序段1 #else 程序段2 #endif 只是第一行与第一种形式不同:将“ifdef”改为“ifndef”.它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2…
#ifdef DEBUG //标识符//定义过执行#else//未定义过执行#endif #ifndef DEBUG//标识符//未定义过执行#else//定义过执行#endif #if (5>4)   //表达式//真执行#else//假执行#endif  …
语法: // #ifdef %PLATFORM% 这些代码只在该平台编译 // #endif #ifdef :      if defined  仅在某个平台编译 #ifndef :     if not defined  在除里该平台的其他编译 #endif :      end if 结束条件编译 %PLATFORM%    需要编译的平台,上面的MP就是各个小程序的意思 uni-app支持的各个平台 值 平台 参考文档 APP-PLUS 5+App HTML5+ 规范 APP-PLUS-N…
//此处根据0还是1来判断具体使用那一段主函数 #if 1 #define WAY #endif #ifdef WAY #include <iostream> #include<string.h> #include<stdio.h> #include<algorithm> #include<vector> #include <iomanip> using namespace std; ; int main() { /*将数组赋值给ve…
情况1:#ifdef _DEBUGvirtual void AssertValid() const;                 //assert(断言)valid(有效的,正确的)virtual void Dump(CDumpContext& dc) const;        //存储上下文#endif 这两个函数是调试用的,第一个函数检查可用性,即是否有效.第二个函数如果未更改的话,最终调用的是Cwnd::Dump();输出窗口类名,标题名等一系列信息(在输出窗口中). #ifdef…
1.在好多程序中我们会遇到下面代码段 #ifdef __cplusplus        extern "C" {        #endif //c语法代码段 #ifdef __cplusplus        }        #endif // 首先应该知道,__cplusplus是CPP中的自定义宏,则表示这是一段cpp的代码,编译器按c++的方式编译系统..如果这时候我们需要使用c语言的代码,那么就需要加上(extern "C" { )这一段来说明,要不编…
#ifdef __cplusplus // C++编译环境中才会定义__cplusplus (plus就是"+"的意思) extern "C" { // 告诉编译器下面的函数是c语言函数(因为c++和c语言对函数的编译转换不一样,主要是c++中存在重载) #endif 其实很简单,作用就是:如果此头文件是在c++中使用的(就是一个.cpp文件include此头文件,而不是一个.c文件),那么函数名称粉碎方式仍然使用C中的方式.(就是此函数编译后在object文件中的…
平时我们在linux c平台开发的时候,引用了一些Cpp或者C的代码库,发现一些头文件有如下代码条件编译. #ifdef __cplusplus extern "C" { #endif // 代码 #ifdef __cplusplus } #endif 这个是什么意思呢?一开始看到这个也很茫然.上网查找了一些资料. 主要作用: 为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们. 原因:…
C语言和C++语言程序中广泛存在着#ifdef或#ifndef等条件编译语句,本篇就系统介绍下他们的用法. 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. #ifdef  条件编译命令最常见的形式为: 1 2 3 4 5 #ifdef 标识符     // 程序段1 #else     /…
"#ifdef __cplusplus extern "C" { #endif"的定义 看一些程序的时候老是有 "#ifdef __cplusplus extern "C" { #endif"的定义,搞搞清楚是怎么回事: Microsoft-Specific Predefined Macros __cplusplus Defined for C++ programs only.  意思是说,如果是C++程序,就使用 exter…
  平时我们在linux c平台开发的时候,引用了一些Cpp或者C的代码库,发现一些头文件有如下代码条件编译. #ifdef __cplusplus extern "C" { #endif // 代码 #ifdef __cplusplus } #endif 这个是什么意思呢?一开始看到这个也很茫然.上网查找了一些资料. 主要作用: 为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们. 原因…
现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个源程序文件引用该头文件,那么在链接的时候就会出现重复定义,即使在头文件的首尾添加#ifnef,#define ,#enddif这样的形式也挽救不了这种错误,事实上,#ifnef和#enddif的作用仅仅是防止头文件嵌套包含.以下是转载https://blog.csdn.net/weixin_4165…
转载! 1.在好多程序中我们会遇到下面代码段 #ifdef __cplusplus         extern "C" {         #endif //c语法代码段 #ifdef __cplusplus         }         #endif 首先应该知道,__cplusplus是CPP中的自定义宏,则表示这是一段cpp的代码,编译器按c++的方式编译系统..如果这时候我们需要使用c语言的代码,那么就需要加上(extern "C" { )这一段来说…
这个是C中的.意思是说如果你定义了某个东西,则执行一段代码,这段代码是包含在ifdef到endif之间的.比如,你debug一个程序,但是到最后你需要将debug的代码删掉,很多则很麻烦.但是如果你那些debug的测试程序都是包含在ifdef和endif中的,便只需要将DEBUG注释掉就行了. #ifdef _DEBUG#else#endif这是C++中的预处理器.#ifdef _DEBUG的意思是如果预定义了名字_DEBUG,则函数执行该语句里的代码即hins=::LoadLibrary("D…
看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事: Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的函数不使用的C++的名字修饰,而是用C的 The following code shows a head…
转载:http://www.cnblogs.com/ayanmw/archive/2012/03/15/2398593.html 转载:http://blog.csdn.net/zkl99999/article/details/48134621 转载: http://www.jianshu.com/p/5d2eeeb93590 经常看到别人的头文件 有这样的代码 #ifdef __cplusplus extern "C" { #endif // C 样式 的函数 #ifdef __cp…
看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事: Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的函数不使用的C++的名字修饰,而是用C的 The following code shows a head…
本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息 本来只是想了解一下#ifdef,#ifnd…