首頁 > 後端開發 > C++ > 為什麼我的 C 程式碼應該只包含頭檔 (.h) 而不是實作檔 (.cpp)?

為什麼我的 C 程式碼應該只包含頭檔 (.h) 而不是實作檔 (.cpp)?

Mary-Kate Olsen
發布: 2024-12-11 18:01:11
原創
718 人瀏覽過

Why Should I Only Include Header Files (.h) and Not Implementation Files (.cpp) in My C   Code?

了解頭檔和實作檔案包含

使用C 程式碼時,必須了解包含頭檔(.h) 的差異和實作檔案(.cpp)。這種區別對於避免編譯錯誤和維護程式碼組織至關重要。

為什麼只包含頭檔?

當嘗試包含實作檔案 (.cpp) 而不是頭檔(.h),可能會出現「函數的多重定義」之類的編譯錯誤。這是因為頭檔主要包含函數宣告和類別規範,而實作檔案則保存實際的函數實作。

直接包含實作檔案可能會導致函數的多個定義,因為它們的程式碼將在多個原始檔案中重複。預處理器的工作。這種重複會使編譯器感到困惑,從而導致錯誤。

包含標頭的工作原理

包含頭檔會將其內容複製到引用它的來源檔案中。考慮以下範例:

// main.cpp
#include "foop.h"

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
}
登入後複製

預處理器處理此程式碼後,main.cpp 將如下所示:

// iostream stuff

int foo(int a) {
  return ++a;
}

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
}
登入後複製

如您所見,foo() 的實作現在是直接在main.cpp中。但是,如果名為 foop.cpp 的實作檔也包含 foo() 的定義,編譯器會偵測重複的定義並引發錯誤。

以上是為什麼我的 C 程式碼應該只包含頭檔 (.h) 而不是實作檔 (.cpp)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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