亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中定義自己的頭文件

2019-11-06 06:21:40
字體:
來源:轉載
供稿:網友

本文轉自:http://blog.163.com/liumaohua890413@126/blog/static/3578516420101012105736305/

     由多個文件組成的程序需要一種方法連接名字的使用和聲明,在C++中是通過頭文件實現的。頭文件一般包括類的定義,extern 變量的聲明和函數的聲明。使用或定義這些實體的文件要包含適當的頭文件。   頭文件的正確使用有兩個好處:保證所有文件使用給定實體的同一聲明;當聲明需要修改時,只有頭文件需要更新。在定義頭文件時要注意頭文件中所做的聲明在邏輯上應該是適于放在一起的,否則,編譯頭文件會花費較長時間。   使用頭文件時需要注意以下幾點:   

1、頭文件是用于聲明而不是定義

  當定義頭文件時,記住定義和聲明的區別是很重要的。定義只可以出現一次,而聲明可以出現多次。因為頭文件包含在多個源文件中,所以不應該含有變量或函數的定義,否則會造成在同一個程序對同一個變量或函數的多次定義。下列語句是定義,所以不應該放在頭文件中:   extern int ival = 10;   double ix;   對頭文件不應該含有定義這一規則,有三個例外。頭文件可以定義類,值在編譯時就已經知道的const對象和inline函數。這些實體可以在多個源文件中定義,只要每個源文件中的定義是相同的。   在頭文件中定義這些實體,是因為編譯器需要它們的定義來產生代碼。例如:為了產生能定義或使用類的對象的代碼,編譯器需要知道組成該類型的數據成員,同樣還需要知道能夠在這些對象上執行的操作。對于const對象,作以下說明:   除非特別說明,在全局作用域聲明的const變量默認為是定義該對象的文件的局部變量。此變量只存在于那個文件中,不能被其他文件訪問。通過指定const變量為extern,就可以在整個程序中訪問const對象。例如:   //在file1中定義變量ix   extern const int ix = 5;   //在file2中我們可以這樣使用它   extern const int ix;   for (int index = 0; index != ix; ++index)   {…}   通過對const變量進行為編譯器可見的初始化式初始化后,const變量成為常量表達式。為了能夠讓const變量和它的初始化式在每個文件中都可見,一般都把這樣的const變量定義在頭文件中,從而使包含該頭文件的文件都可以使用相同的常量值。無論該const變量何時使用,編譯器都可以看見其初始化式。在C++中任何變量都只能定義一次,定義會分配存儲空間,而所有對該變量的使用都關聯到同一存儲空間,因為const對象默認為定義它的文件的局部變量,所以把它們定義放在頭文件中是合法的。   如果const變量不是用常量表達式初始化,那么它就不應該在頭文件中定義,相反,它應該和其他變量一樣,該const變量應該在一個源文件中定義并初始化,然后在頭文件中為它添加extern聲明,以使其能被多個文件共享。

2、預處理器的簡單介紹

  #include設施是C++預處理器的一部分,它只接受一個參數:頭文件名。預處理器用指定的頭文件的內容替代每個#include.

3、頭文件保護符

  頭文件經常#include其他頭文件,頭文件定義的實體經常使用其他頭文件的設施,在同一源文件中還可能多次包含同一頭文件。比如我們自己定義了一個Query.h的頭文件,該頭文件中包含了string的頭文件。同時,我們在編寫源代碼時也使用了string庫,這樣string 庫就包含了兩次:一次是通過程序本身直接包含,一次是通過包含Query頭文件間接包含。   設計頭文件時,應使其可以多次包含在同一源文件中,我們必須保證多次包含同一頭文件不會引起該頭文件中定義的類和對象被多次定義,使得頭文件安全的通用做法,是使用預處理器定義頭文件保護符來避免在已經見到頭文件的情況下重新處理該頭文件的內容。      

4、定義預處理變量及頭文件

  為了避免名字沖突,預處理變量經常用全大寫字母表示。預處理變量有兩種狀態:已定義或未定義。定義預處理器變量和檢測其狀態所用的預處理指示不同。#define指示接受一個名字并定義該名字為預處理變量。#ifndef指示檢測指定的預處理器變量是否未定義。如果預處理器變量未定義,那么跟在其后的所有指示都被處理,直到出現#endif。可以使用這種方法來預防多次包含同一頭文件。   #ifndef QUERY_H   #define QUERY_H   //定義query.h中的內容   #endif

  條件指示   #ifndef QUERY_H   測試 QUERY_H預處理器變量是否未定義。如果 QUERY_H未定義,那么#ifndef測試成功,跟在#ifndef后面的所有行都被執行,直到發現#endif.相反,如果QUERY_H已定義,那么#infdef指示測試為假,該指示和#endif指示之間的代碼都被忽略。通常情況下,我們用定義在頭文件中的實體(如類)來命名預處理器變量來避免預處理器變量重名的問題。通過使用類名來組成頭文件和預處理器變量的名字,可以使得很可能只有一個文件將會使用該預處理器變量。

5、使用自定義的頭文件

  #include指示接受以下兩種形式:   #include<iostream>   #include"query.h"   如果頭文件名括在尖括號< >里,那么認為該頭文件是標準頭文件。編譯器會在預定義的位置集查找該頭文件,這些預定義的位置可以通過設置查找路徑環境變量或者通過命令行選項來修改。如果頭文件名括在一對引號里,那么認為它是非系統頭文件,非系統頭文件的查找通常開始于源文件所在的路徑。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女视频| 欧美高清视频在线观看| 亚洲自拍偷拍第一页| 国产日韩在线观看av| 中文.日本.精品| 九九热这里只有在线精品视| 亚洲已满18点击进入在线看片| 欧美与黑人午夜性猛交久久久| 97精品一区二区三区| 亚洲精品一区中文字幕乱码| 91精品国产高清久久久久久91| 中文字幕最新精品| 日韩高清电影免费观看完整版| 国产一区二区在线免费视频| 日韩高清av在线| 欧美日韩一区二区免费在线观看| 亚洲精品视频网上网址在线观看| 中文字幕亚洲二区| 欧美另类极品videosbest最新版本| 欧美日韩福利电影| 欧美性开放视频| 国产精品一区久久| 精品视频一区在线视频| 欧美xxxx14xxxxx性爽| 国产亚洲精品美女久久久久| 亚洲夜晚福利在线观看| 91精品国产自产在线观看永久| 色偷偷88888欧美精品久久久| 亚洲欧美综合图区| 91成人在线播放| 成人福利在线观看| 亚洲最大在线视频| 国产精品成人观看视频国产奇米| 精品日本美女福利在线观看| 亚洲欧美国产精品久久久久久久| 欧美激情手机在线视频| 国产在线观看不卡| 伊人久久免费视频| 免费91麻豆精品国产自产在线观看| 国产精品久久久久影院日本| 欧美丝袜一区二区三区| 成人在线激情视频| 亚洲欧美一区二区三区情侣bbw| 伊人久久久久久久久久久| 久久九九全国免费精品观看| 国自在线精品视频| 久久久国产精彩视频美女艺术照福利| 菠萝蜜影院一区二区免费| 最新的欧美黄色| 国产专区精品视频| 国产精品91久久久久久| 国产精品夜色7777狼人| 狠狠色香婷婷久久亚洲精品| 综合久久五月天| 97久久伊人激情网| 在线观看欧美日韩| 日韩一区二区精品视频| 日韩黄色高清视频| 欧美性猛交视频| 久久伊人91精品综合网站| 国产欧美va欧美va香蕉在| 欧美国产日本高清在线| 高清欧美性猛交| 国产精品欧美亚洲777777| 欧美激情亚洲另类| 欧美日韩国产影院| 日韩视频第一页| 国产一区视频在线| 免费不卡欧美自拍视频| 在线观看免费高清视频97| 成人福利视频在线观看| 日韩av一区在线观看| 欧美日韩成人在线播放| 欧美激情国内偷拍| 日韩视频精品在线| 亚洲人成电影在线播放| 亚洲在线观看视频| 久久精品一本久久99精品| 亚洲风情亚aⅴ在线发布| 95av在线视频| 午夜免费日韩视频| 国产精品久久久久久久久久久久久| 亚洲综合成人婷婷小说| 欧美亚洲国产视频| 亚洲最大av在线| 日本a级片电影一区二区| 91经典在线视频| 精品久久香蕉国产线看观看亚洲| 91在线中文字幕| www.日本久久久久com.| 欧美激情精品久久久久| 亚洲国产精久久久久久| 美女少妇精品视频| 精品小视频在线| 国产婷婷97碰碰久久人人蜜臀| 亚洲大尺度美女在线| 91九色在线视频| 亚洲视频在线视频| 亚洲美腿欧美激情另类| 精品亚洲aⅴ在线观看| 欧日韩不卡在线视频| 亚洲最大福利视频| 国产精品小说在线| 日韩欧美aⅴ综合网站发布| 国产亚洲欧美一区| 国产精品第七影院| 亚洲国内高清视频| 亚洲小视频在线| 国产精品久久久久久久久久三级| 日韩一区视频在线| 国产精品日日做人人爱| 亚洲国产精品yw在线观看| 国产婷婷97碰碰久久人人蜜臀| 欧美精品18videosex性欧美| 538国产精品一区二区免费视频| 欧美亚洲国产日本| 亚洲第一区中文字幕| 精品久久久一区| 黑人精品xxx一区一二区| 久久久av亚洲男天堂| 成人黄色生活片| 久久精品国产69国产精品亚洲| 精品国产一区二区三区久久| 欧美日韩综合视频网址| 欧美大片在线看| 亚洲女人天堂色在线7777| 亚洲第一色在线| 亚洲精品丝袜日韩| 国产精品精品一区二区三区午夜版| 最近2019免费中文字幕视频三| 国产欧美日韩丝袜精品一区| 精品调教chinesegay| 91精品国产高清自在线| 羞羞色国产精品| 久久乐国产精品| 九九综合九九综合| 国产三级精品网站| 永久555www成人免费| 日本a级片电影一区二区| 国产男人精品视频| 欧美日韩国产一区在线| 久久久久国产一区二区三区| 亚洲国产精品悠悠久久琪琪| 久久韩剧网电视剧| 国产精品欧美激情| 欧美网站在线观看| 国产日韩欧美视频在线| 亚洲精品一区久久久久久| 亚洲女人被黑人巨大进入al| 精品露脸国产偷人在视频| 4388成人网| 日韩在线播放av| 亲子乱一区二区三区电影| www.久久草.com| 综合国产在线观看| 亚洲老板91色精品久久| 成人中文字幕+乱码+中文字幕| 日本aⅴ大伊香蕉精品视频| 久久精品精品电影网| 欧美日韩国产精品一区二区不卡中文| 欧美在线视频网站| 欧美激情videos| 久久国产精品电影| 欧美激情免费观看|