如何在头文件中使用预处理器语句取决于包含它的 C++ 文件
How to Have Preprocessor Statements in Header File Depend on Which C++ File is Including It
如何根据包含 .h 文件的 .cpp 在我的 .h 文件中排除某些 #include 语句?
示例:
main.cpp 文件
<tell the header.h file that main.cpp is including it>
#include "header.h"
other.cpp 文件
<tell the header.h file that other.cpp is including it>
#include "header.h"
header.h 文件
<if called by main.cpp>
#include "some_file_which_fails_when_used_with_OTHER_CPP.h"
<end if>
执行此操作的典型方法是在包含 header:
之前期望源文件 #define
一个宏
// the_header.h
#ifndef MY_HEADER_H_INCLUDED
#define MY_HEADER_H_INCLUDED
#ifdef MY_PROJECT_MAIN
// ...
#else
// ...
#endif
#endif
在使用 header 的“默认”行为的文件中
// some_code.cpp
// Just use the header
#include "the_header.h"
在使用 header 激活行为的文件中:
// main.cpp
// Make sure this is BEFORE the #include
#define MY_PROJECT_MAIN
#include "the_header.h"
如何根据包含 .h 文件的 .cpp 在我的 .h 文件中排除某些 #include 语句?
示例:
main.cpp 文件
<tell the header.h file that main.cpp is including it>
#include "header.h"
other.cpp 文件
<tell the header.h file that other.cpp is including it>
#include "header.h"
header.h 文件
<if called by main.cpp>
#include "some_file_which_fails_when_used_with_OTHER_CPP.h"
<end if>
执行此操作的典型方法是在包含 header:
之前期望源文件#define
一个宏
// the_header.h
#ifndef MY_HEADER_H_INCLUDED
#define MY_HEADER_H_INCLUDED
#ifdef MY_PROJECT_MAIN
// ...
#else
// ...
#endif
#endif
在使用 header 的“默认”行为的文件中
// some_code.cpp
// Just use the header
#include "the_header.h"
在使用 header 激活行为的文件中:
// main.cpp
// Make sure this is BEFORE the #include
#define MY_PROJECT_MAIN
#include "the_header.h"