包含.cpp檔:函數重複的案例
在C語言中開發時,一般建議包含頭檔(.h)功能文件,而不是實作(.cpp) 文件。包含 .cpp 檔案可能會因函數重複而導致錯誤。
讓我們考慮以下程式碼範例:
// main.cpp #include <iostream> #include "foop.h" // Header file containing the function declaration int main() { std::cout << foo(42) << std::endl; return 0; } // foop.h int foo(int a); // Function declaration // foop.cpp int foo(int a) { // Function definition return ++a; }
此程式碼將正確編譯並運行,因為頭檔(.h)僅包含foo() 函數的聲明,而定義在單獨的.cpp 檔案中提供。
但是,如果我們取代main.cpp 中的頭檔包含與.cpp 檔案包含:
// main.cpp #include <iostream> #include "foop.cpp" // Implementation file containing the function definition
這將導致編譯器錯誤:
multiple definition of foo(int) first defined here
這是因為預處理器複製了將檔案包含到主來源檔案中。包含 .cpp 檔案可以有效地將 foo() 函數定義複製到 main.cpp 中,從而導致函數的重複定義。
為了避免函數重複,建議包含頭 (.h) 檔案僅適用於宣告和定義的 .cpp 檔案。這有助於確保函數在程式中僅定義一次。
以上是為什麼我應該在 C 中包含頭檔 (.h) 而不是實作 (.cpp) 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!