第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > #if #ifdef #ifndef #else #elif #endif的用法

#if #ifdef #ifndef #else #elif #endif的用法

时间:2024-07-15 15:01:14

相关推荐

#if  #ifdef  #ifndef  #else  #elif  #endif的用法

#ifdef的用法

灵活使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。

代码举例:新建define.cpp文件

#include"iostream.h" intmain() { #ifdefDEBUG cout<<"Beginningexecutionofmain()"; #endif return0; } 运行结果为:Press any key to continue

改写代码如下:

#include"iostream.h" #defineDEBUG intmain() { #ifdefDEBUG cout<<"Beginningexecutionofmain()"; #endif return0; } 运行结果为:Beginning execution of main()

Press any key to continue

更一般的情况是,#define语句是包含在一个特定的头文件中。

比如,新建头文件head.h,在文件中加入代码:

#ifndefDEBUG #defineDEBUG #endif 而在define.cpp源文件中,代码修改如下: #include"iostream.h" #include"head.h" intmain(){ #ifdefDEBUG cout<<"Beginningexecutionofmain()"; #endif return0; }

运行结果如下:Beginning execution of main()

Press any key to continue

结论:通过使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码

#if, #ifdef, #ifndef, #else, #elif, #endif的用法:

这些命令可以让编译器进行简单的逻辑控制,当一个文件被编译时,你可以用这些命令去决定某些代码的去留,

这些命令式条件编译的命令。

常见的条件编译的三种形式:

①第一种形式:

#ifdefined(或者是ifdef)<标识符(条件)>

<程序段1>

#endif

②第二种形式:

#if!defined(或者是ifndef)<标识符(条件)>

<程序段1>

#ifdef…

[#elif…]

[#elif…]

#else…

#endif

示例:

#include <iostream>

using namespace std;

int main()

{

#if DEBUG /*或者是#ifdef DEBUG*/

cout << "条件成立,DEBUG已经定义了!" <<endl;

#else

cout << "条件不成立,DEBUG还没定义" <<endl;

#endif

return 0;

}

//结果输出:条件不成立,DEBUG还没定义

//如果是添加了#define DEBUG ,输出结果是:条件成立,DEBUG已经定义了!

#include <iostream>

using namespace std;

#define DEBUG

int main()

{

#ifdef DEBUG /*或者是#ifdef DEBUG*/

cout << "条件成立,DEBUG已经定义了!" <<endl;

#else

cout << "条件不成立,DEBUG还没定义" <<endl;

#endif

return 0;

}

//要注意的是,如果是#define 宏名,没有宏体如 #define DEBUG,就必须使用#ifdef或#ifndef与之对应,

//如果是#define 宏名 宏体,如 #define NUM 1,#if 和#ifdef都可以使用。

/*

#define的用法:

*/

示例二:

#include <iostream>

using namespace std;

#define NUM 10

int main()

{

#ifndef NUM

cout << "NUM没有定义!"<<endl;

#elif NUM >= 100

cout << "NUM >100" <<endl;

#elif NUM <100 && NUM >10

cout << "10 < NUM < 100" <<endl;

#elif NUM == 10

cout << "NUM ==10" <<endl;

#else

cout << "NUM < 10" << endl;

#endif

return 0;

}

//输出NUM ==10

也可以在mk文件定义NUM

ifeq ($(BOARD_SCREENRECORD_LANDSCAPE_ONLY),true)

LOCAL_CFLAGS += -DNUM

endif

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。