我開始使用第三方庫進行一些工作,並且在Visual Studio 2010中構建它時,我注意到我多次收到此鏈接程序警告(LNK4221)。我查看了創建被鏈接的對象文件時使用的源代碼,發現這些文件的所有實現都位於頭文件中。有趣的是,我還注意到該項目包含相應的.cpp文件,其中包含,只有#頭文件包含實現。僅包含一個#include的.cpp文件的要點是什麼?
我很好奇 - 這是什麼意思,爲什麼我要使用這種技術?如果.cpp文件沒有爲該項目添加任何值,爲什麼我不應該刪除它們以擺脫鏈接器警告?
我試過尋找類似的問題,但沒有找到任何感興趣的東西。如果你知道任何,請鏈接它們。
這是一個警告,而不是一個錯誤。 – 2012-07-18 15:49:33
是的,我知道。我比使用僅包含一個#include的.cpp文件的技術更少關心警告。 – 2012-07-18 15:51:54
兩種可能的動機:1 - 可能被認爲總是擁有'.h' /'.cpp'對的良好習慣。也許作者認爲他們稍後會加入'.cpp'。 2 - '.h'文件不能被編譯成目標文件,'.cpp'文件可以。 – BoBTFish 2012-07-18 16:01:46