我有自己的库项目,包含我在其他工作项目中引用的实用程序。该库有自己的预编译头文件:
// 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
?