簡體   English   中英

為什么可執行二進制文件包含包含頭文件的路徑?

[英]Why does the executable binary file contain paths of included header files?

為什么編譯和鏈接的可執行文件包含源代碼中包含的頭文件路徑? 我正在使用wxWidgets庫並使用Visual Studio 2013和gcc進行編譯。 這些頭文件用於什么? 如果它是編譯器選項,我如何禁用它以避免這種情況?

構建配置:發布,靜態鏈接。

例

可執行文件中可能會出現多種解釋:

  • 您可能具有捆綁在可執行文件中的調試信息供調試器使用。 使用strip刪除它,或者不使用-g compile選項。 您還應該使用NDEBUG進行編譯,以禁用調試代碼和斷言。 發布模式通常是這種情況,但您可能需要仔細檢查。
  • 某些函數可能使用__FILE__進行跟蹤或記錄。 __FILE__在宏擴展時擴展為源文件名,可以是源文件或頭文件。 一個這樣的函數是assert() :它實際上是一個擴展為測試的宏和一些包含當前文件名的錯誤報告代碼。
  • 某些源可能具有靜態static char數組形式的靜態源ID,以跟蹤源代碼版本。 這種方法已經相當陳舊,但許多舊資源仍然存在。

在源文件或頭文件中查找其名稱出現在可執行文件中並修復問題的內容。

wxwidgets在其頭文件中有很多斷言(例如在你注意到的wx/string.h中),都使用wx/debug.h定義的wxASSERT宏。為了禁用這些,你可以在包含任何 wxwidget之前#define wxDEBUG_LEVEL 0頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM