C++:条件编译

/ C++ / 没有评论 / 1842浏览

之前没有深入了解条件编译,今天空一点时间自己写了一个demo,了解一下使用。

条件编译

指的是根据实际定义宏(某类条件)进行代码静态编译的手段。

#ifdef

#elif

#else

#endif
/*或者防止头文件重复包含*/
#ifndef ABCD_H
#define ABCD_H
 
 // ... some declaration codes
 
#endif // #ifndef ABCD_H

使用场景举例

我们在开发的时候,经常输出调试日志,但是上到正式环境中,这些调试日志是不需要出现的,虽然现在大多数日志库有日志级别控制。又或者我们在调试的时候使用的测试代码,在正式环境的时候不需要了,就可以用。再比如跨平台代码使用的时候。

测试代码

// define.h
#pragma once
#include <iostream>

#ifdef AC_DEBUG
#define print() std::cout << "aaaa" << std::endl;
#else
#define print() std::cout << "bbbb" << std::endl;
#endif // AC_DEBUG
//main.cpp
#define AC_DEBUG   //必须定义在头文件前面
#include "define.h"

int main()
{
	print();
	system("PAUSE");
	return 0;
}

//输出
//aaaa
//去掉#define AC_DEBUG
//输出 bbbb