之前没有深入了解条件编译,今天空一点时间自己写了一个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
本文由 Ryan 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2020/08/06 17:28