预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #ifndef #ifdef

Posted 飞凡可期

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #ifndef #ifdef相关的知识,希望对你有一定的参考价值。

预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #ifndef #ifdef

用法

    #ifdef  标识符                          #ifndef  标识符

    程序段1                                       程序段1

    #else                                         #else

    程序段2                                       程序段2

    #endif                                      #endif
项目内容
目的1 头文件使用,防止重复调用该头文件
-2 测试使用,省去注释的麻烦(定义了就不再定义)
-3 不同场景的选择(如果定义了是a场景,如果没有就是b场景,比如求面积,边长l矩形; 圆形半径r
制定程序|-main.cpp
-|-pracifdef.cpp
-|-pracifdef.h

Main

/*
 * main.cpp
 *
 *  Created on: 2021年5月19日
 *      Author: c00525771
 */
 
#include "pracifdef.h"
 
#include <iostream>
#define HANDL_
//#define ADD_
 
using namespace std;
 
int main() {
#ifdef HANDL_ //here for (2) test selection
cout << "(2) Hello World, I used ifdef cmds!!!" << endl; // prints !!!Hello World!!!
#endif
pracifdef();
 
int a = 10, b = 100, c = 0;
#ifdef ADD_
c = a + b;
cout << "(3) ifdef ADD_: c= " << c << endl;
#else
c = a - b;
cout << "(3) ifndef ADD_: c= " << c << endl;
#endif
 
return 0;
}

Pracifdef.cpp



 * pracifdef.cpp
 *
 *  Created on: 2021519*      Author: c00525771
 */
#include "pracifdef.h"
#include <iostream>
 
using namespace std;
 
pracifdef::pracifdef() {
// TODO Auto-generated constructor stub
   std::cout <<"I am another program"<< std::endl;
}
 
pracifdef::~pracifdef() {
// TODO Auto-generated destructor stub
}
 

Pracifdef.h



/*
 * pracifdef.h
 *
 *  Created on: 2021年5月19日
 *      Author: c00525771
 */
 
#ifndef PRACIFDEF_H_ //here for (1) avoid repeat call
#define PRACIFDEF_H_
 
class pracifdef {
public:
pracifdef();
virtual ~pracifdef();
};
 
#endif /* PRACIFDEF_H_ */

测试

打开场景:

(2) Hello World, I used ifdef cmds!!!
I am another program
(3) ifdef ADD_: c= 110

关闭场景: //#define ADD_

(2) Hello World, I used ifdef cmds!!!
I am another program
(3) ifndef ADD_: c= -90

以上是关于预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #ifndef #ifdef的主要内容,如果未能解决你的问题,请参考以下文章

c语言的宏定义

C++笔试常见问题

C语言开发必会 宏定义宏函数

在C语言中 宏定义是啥?

#ifndef, #define, #endif 作用

c语言中的“宏”是指啥?