在Visual C ++中重用预编译的头文件

时间:2014-10-16 18:56:04

标签: c++ visual-c++

我有自己的库项目,包含我在其他工作项目中引用的实用程序。该库有自己的预编译头文件:

// My_Library

// stdafx.h
#pragma once
#include "Lib_Class.h"

// stdafx.cpp (compile with /Yc"stdafx.h")
#include "stdafx.h"

// Lib_Class.h
class Lib_Class { ... }

在我的工作项目中,我想要一个包含库的PCH以及我在整个项目中使用的一些其他文件,但仅限于该项目。

// My_Project

// stdafx_proj.h
#pragma once
#include "stdafx.h" // from My_Library
#include "Proj_Class.h"

// stdafx_proj.cpp (compile with /Yc"stdafx_proj.h")
#include "stdafx_proj.h"

// Proj_Class.h
#pragma once
class Proj_Class { ... }

// main.cpp (compile with /Yu"stdafx_proj.h")
#include "stdafx_proj.h"
...
Lib_Class lc;
Proj_Class pc;
...

到目前为止一切顺利。现在在My_Project我添加了第二个类,它引用了前面的类:

// stdafx_proj.h
#pragma once
#include "stdafx.h"
#include "Proj_Class.h"
#include "Proj_Class2.h"

// Proj_Class2.h
#pragma once
class Proj_Class2 {
    Lib_Class lc; // fine  
    Proj_Class pc; // syntax error - doesn't recognize Proj_Class
}

我可以通过将#include "stadfx_proj.h"放在Proj_Class2.h的顶部来绕过它,但这是个坏主意吗?

为什么Proj_Class2找到Lib_Class而不是Proj_Class

0 个答案:

没有答案