我有一个预编译的标头,其中包含各种 3rd 方库的包含,例如:
#ifndef PRECOMPILED_H
#define PRECOMPILED_H
#include "booststuff.h"
#include "luastuff.h"
#endif
booststuff.h和luastuff.h是我项目中的头文件,它们只包含各种 boost / lua 相关的东西,并设置了一些 typedefs / usings / 命名空间别名。
我在 Visual Studio (2012) 中以通常的方式设置了预编译头文件,并使用强制包含选项将其包含在每个 cpp 文件中。
在 cpp 文件中,我也非常小心地使用了 #include "booststuff.h"(我有时会禁用预编译的头文件来测试它)。但是,我最近一直在想这是否是一个好主意。所以:
如果我再次包含一个已经包含在预编译头文件中的文件,是否会发生任何不好的事情(我不明白为什么会这样,但我已经看到关于头文件必须“以相同的顺序”包含的事情,并且没有真正理解他们在说什么)?
它是否会影响 Intellisense(对于一个相当小的项目来说速度非常慢)?我很乐意放弃一些可移植性以获得更好的 Intellisense,因为我目前不想切换平台。