繁体   English   中英

如何通过C ++预处理器#include包含文件的一部分

[英]How to include part of file by C++ preprocessor #include

我想引用一些我不维护的稳定库代码。 实际上,这是一些MFC代码段。

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

目前,我将代码段复制/粘贴到我的项目中,但是我感到可耻。 我可以只使用C ++预处理程序来引用文件的一部分吗?

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

有一些超级#include用法吗?


我们可以写点什么吗

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

这意味着在foo.h中包含第22至54行

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

标头通常看起来像这样

#ifdef USE_FANCYPANTS
bool hasFancyPants();
#endif

#ifdef USE_COOLSTUFF
void doCoolStuff();
#endif

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

#define USE_FANCYPANTS
#include "header.hpp"

那么你只会得到hasFancyPants()而不是doCoolStuff()

  • 您可以使用条件编译来包含/排除不需要的内容。 您必须稍微更改代码,并修改项目设置。
  • 可以使用typedef关键字,它将为MFC和非MFC定义不同的类型,和/或特定于您的项目设置和旧版代码。
  • 您可以将全部内容放入DLL或.LIB(具有代码,而不仅是声明),并将链接器编译指示放在标头文件本身中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM