C++標頭檔

來源:互聯網
上載者:User

標頭檔

每個C++/C程式通常分為兩個檔案。一個檔案用於儲存程式的聲明(declaration),稱為標頭檔。另一個檔案用於儲存程式的實現(implementation),稱為定義(definition)檔案。
C++/C程式的標頭檔以“.h”為尾碼,C程式的定義檔案以“.c”為尾碼,C++程式的定義檔案通常以“.cpp”為尾碼(也有一些系統以“.cc”或“.cxx”為尾碼)。

1.1 著作權和版本的聲明
著作權和版本的聲明位於標頭檔和定義檔案的開頭(參見樣本1-1),主要內容有:
(1)著作權資訊。
(2)檔案名稱,標識符,摘要。
(3)目前的版本號,作者/修改者,完成日期。
(4)版本曆史資訊。


/*
* Copyright (c) 2001,老妖工作室
* All rights reserved.
*
* 檔案名稱:filename.h
* 檔案標識:見組態管理計劃書
* 摘    要:簡要描述本檔案的內容
*
* 目前的版本:1.1
* 作    者:輸入作者(或修改者)名字
* 完成日期:2001年7月20日
*
* 取代版本:1.0
* 原作者  :輸入原作者(或修改者)名字
* 完成日期:2001年5月10日
*/

樣本1-1 著作權和版本的聲明

1.2 標頭檔的結構
標頭檔由三部分內容組成:
(1)標頭檔開頭處的著作權和版本聲明(參見樣本1-1)。
(2)預先處理塊。
(3)函數和類結構聲明等。
假設標頭檔名稱為 graphics.h,標頭檔的結構參見樣本1-2。
【規則1-2-1】為了防止標頭檔被重複引用,應當用ifndef/define/endif結構產生預先處理塊。
【規則1-2-2】用 #include <filename.h> 格式來引用標準庫的標頭檔(編譯器將從標準庫目錄開始搜尋)。
【規則1-2-3】用 #include “filename.h” 格式來引用非標準庫的標頭檔(編譯器將從使用者的工作目錄開始搜尋)。
【建議1-2-1】標頭檔中只存放“聲明”而不存放“定義”
在C++ 文法中,類的成員函數可以在聲明的同時被定義,並且自動成為內嵌函式。這雖然會帶來書寫上的方便,但卻造成了風格不一致,弊大於利。建議將成員函數的定義與聲明分開,不論該函數體有多麼小。
【建議1-2-2】不提倡使用全域變數,盡量不要在標頭檔中出現象extern int value 這類聲明。


// 著作權和版本聲明見樣本1-1,此處省略。
#ifndef   GRAPHICS_H  // 防止graphics.h被重複引用
#define   GRAPHICS_H
#include <math.h>     // 引用標準庫的標頭檔

#include “myheader.h”   // 引用非標準庫的標頭檔

void Function1(…);   // 全域函式宣告

class Box             // 類結構聲明
  {
  …
  };
#endif

樣本1-2 C++/C標頭檔的結構

1.3 定義檔案的結構
定義檔案有三部分內容:
(1)       定義檔案開頭處的著作權和版本聲明(參見樣本1-1)。
(2)       對一些標頭檔的引用。
(3)       程式的實現體(包括資料和代碼)。
假設定義檔案的名稱為 graphics.cpp,定義檔案的結構參見樣本1-3。


// 著作權和版本聲明見樣本1-1,此處省略。
#include “graphics.h”     // 引用標頭檔

// 全域函數的實現體
void Function1(…)
  {
  …
  }
// 類成員函數的實現體
void Box::Draw(…)
  {
  …
  }

樣本1-3 C++/C定義檔案的結構

1.4 標頭檔的作用
早期的程式設計語言如Basic、Fortran沒有標頭檔的概念,C++/C語言的初學者雖然會用使用標頭檔,但常常不明其理。這裡對標頭檔的作用略作解釋:
(1)通過標頭檔來調用庫功能。在很多場合,原始碼不便(或不準)向使用者公布,只要向使用者提供標頭檔和二進位的庫即可。使用者只需要按照標頭檔中的介面聲明來調用庫功能,而不必關心介面怎麼實現的。編譯器會從庫中提取相應的代碼。
(2)標頭檔能加強型別安全檢查。如果某個介面被實現或被使用時,其方式與標頭檔中的聲明不一致,編譯器就會指出錯誤,這一簡單的規則能大大減輕程式員調試、改錯的負擔。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.