在構建一個不斷增長的類/函數庫時,我通常會看到一種「傘」頭文件,它包含項目的所有常見頭文件。例如:C++編譯器是否對未使用的#includes進行了優化?
dsp.h
#include "file1.h"
#include "file2.h"
...
#include "filex.h"
有時我可能需要一切,但其他時間可能只有一些功能/選項。如果#include dsp.h,但不使用file2.h中的任何內容,編譯器是否知道?它有可能在構建中優化它嗎?
否則,我的解決方案是將可選代碼包裝在預處理指令中,然後定義我需要的。也許這是一個更安全,更有效的解決方案?
我正在談論代碼優化,而不是編譯時間。基本上,如果包含的頭文件未被使用,是否仍將其包含在構建的可執行文件中,從而增加代碼大小? – Chris
@Chris - 不,它不會增加代碼大小。 – user93353
@ user93353如果不知道頭文件的代碼,則無法做出該決定。 –