簡體   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