首頁  >  文章  >  後端開發  >  為什麼我應該在 C 中包含頭檔 (.h) 而不是實作 (.cpp) 檔案?

為什麼我應該在 C 中包含頭檔 (.h) 而不是實作 (.cpp) 檔案?

Barbara Streisand
Barbara Streisand原創
2024-11-26 01:06:12471瀏覽

Why Should I Include Header (.h) Files Instead of Implementation (.cpp) Files in C  ?

包含.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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn