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

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

Barbara Streisand
發布: 2024-11-26 01:06:12
原創
563 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板