求问关于 #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

回到顶部