求问关于 #define 和 #include 以及编译相关的问题
如图所示,四个简单的文件(先不管这种用法有没有错吧)
但是为什么 test.cpp 中两种 #include 方法,第一种就报错了呢?第二种是正常的
classA.hpp
#define use_classB#include "header.h"
class classA {
classB* func() {
}
};
classB.hpp
class classB {};
header.h
#ifndef __HEAD_H__#define __HEAD_H__
#ifdef use_classA
#include "classA.hpp"
#endif
#ifdef use_classB
#include "classB.hpp"
#endif
#endif //__HEAD_H__
test.cpp
/* 如果是这样,编译报错 */#define use_classA
#include "header.h"
/* 如果是这样,编译没有问题 */
// #include "classA.hpp"
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
回答
因为你header.h只包含一次,所以一旦#define use_classA,那么再也没有机会#include "classB.hpp"了
以上是 求问关于 #define 和 #include 以及编译相关的问题 的全部内容, 来源链接: utcz.com/a/44401.html