预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #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: 2021年5月19日
* 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的主要内容,如果未能解决你的问题,请参考以下文章