2

我想参考一些不是我维护的稳定库代码。实际上它是一些 MFC 代码片段。

但是,每当我想包含代码片段时,我必须包含#include整个文件,因此我必须包含其他内容,然后是整个 MFC ......结果是不可接受的。

目前,我将代码片段复制/粘贴到我的项目中,但我觉得很丢脸。我可以只通过 C++ 预处理器引用文件的一部分吗?

即使代码与特定的 MFC 版本硬链接,也比在我的项目中复制它们要好。有了这样的硬链接,我就知道它来自 MFC 并节省我检查它们的时间。

有什么超级#include用法吗?


我们可以写类似

#include  "foo.h" line [12, 55)

这意味着包含 foo.h 的第 22 到 54 行

4

2 回答 2

6

有些人所做的是在其标题中写入#ifdef-sections 以允许包含文件仅获取特定部分。我不知道您的 MFC 文件是否有这些文件,但您可以查看它并使用任何现有文件或编写您自己的文件。

标题通常看起来像这样

#ifdef USE_FANCYPANTS
bool hasFancyPants();
#endif

#ifdef USE_COOLSTUFF
void doCoolStuff();
#endif

然后您的包含文件在包含之前使用#define。

#define USE_FANCYPANTS
#include "header.hpp"

然后你只会得到 hasFancyPants() 而不是 doCoolStuff()

于 2013-01-22T07:32:47.930 回答
0
  • 您可以使用条件编译来包含/排除您不需要的东西。您必须稍微更改代码,并修改项目设置。
  • 可以使用typedef关键字,它将为 MFC 和非 MFC 定义不同的类型,和/或特定于您的项目设置和遗留代码。
  • 您可以将整个内容放在 DLL 或 .LIB 中(具有代码,而不仅仅是声明),并将链接器编译指示放在头文件本身中。
于 2013-01-22T08:22:16.157 回答