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

首頁(yè) > 編程 > C++ > 正文

C++中頭文件的概念與基本編寫(xiě)方法

2020-05-23 14:11:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了C++中頭文件的概念與基本編寫(xiě)方法,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
 

1 標(biāo)準(zhǔn)庫(kù)中的頭文件
C++標(biāo)準(zhǔn)庫(kù)中的一切內(nèi)容都被放在名字空間std中(名字空間中的內(nèi)容對(duì)外是不可見(jiàn)的),但是帶來(lái)了一個(gè)新問(wèn)題,無(wú)數(shù)現(xiàn)有的C++代碼都依賴(lài)于使用了多年的偽標(biāo)準(zhǔn)庫(kù)中的功能,如聲明在<iostream.h>等頭文件中的功能,使用std包裝標(biāo)準(zhǔn)庫(kù)導(dǎo)致現(xiàn)有代碼的不可用,為了兼容這種情況,標(biāo)準(zhǔn)委員會(huì)為包裝了std的那部分標(biāo)準(zhǔn)庫(kù)創(chuàng)建了新的頭文件,新的頭文件的文件名與舊的一樣,只是沒(méi)有.h這個(gè)后綴,如<iostream.h>就變成了<iostream>。對(duì)于C頭文件,采用同樣的方法,但還在每個(gè)頭文件名前加了字符c,如<string.h>就變成了<cstring>,<stdio.h>變成了<cstdio>。最好使用新的文件頭,使用新的文件頭的C++程序,需要使用using namespace std或者using namespace std::指定的類(lèi)名,等方法來(lái)使需要的類(lèi)對(duì)于我們的代碼可視。

2 自定義的頭文件
為了防止頭文件被重復(fù)引用,最好使用預(yù)處理定義,如下所示:

#ifndef MYHEAD_H#define MYHEAD_H……//頭文件中的內(nèi)容#endif

 

(1)#ifndef:
   指示符#ifndef用來(lái)檢查頭文件的內(nèi)容是否在前面已經(jīng)被定義過(guò),如果定義過(guò),則#ifndef與#endif之間的語(yǔ)句將不被執(zhí)行.所以習(xí)慣上要把頭文件的定義寫(xiě)在這兩個(gè)語(yǔ)句之間.
如:對(duì)于MYHEAD.H這個(gè)頭文件

#ifndef MYHEAD_H#define MYHEAD_H#include "myhead.h"  ......#endif

(2) #ifdef
  指示符#ifdef常常被用來(lái)判斷一個(gè)預(yù)處理器常量是否已被定義,以便有條件地包含程序代碼。
如:

 int main() {  #ifdef DEBUG  cout<<"Beginning execution of main()/n";  #endif  string word;  vector<string> text;  while(cin>>word)  { #ifdef DEBUG cout<<"word read:"<<word<<"/n"; #endif text.push_back(word);   } //..... }

在此程序中,如果定義了DEBUG,則其中包含的兩個(gè)語(yǔ)句都將被執(zhí)行,如果沒(méi)有定義,則其中的兩個(gè)輸出語(yǔ)句不被執(zhí)行。

3 預(yù)處理相關(guān)知識(shí)
(1) #ifdef :判斷一個(gè)預(yù)處理常量是否被定義,如#infef DEGUG
(2) #ifndef:判斷一個(gè)預(yù)處理常量是否沒(méi)被定義
(3) #define:定義一個(gè)預(yù)處理常量,如#define DEBUG
(4) #include
(5) #endif
(6) 對(duì)預(yù)處理常量的定義還可以在編譯時(shí)進(jìn)行,如CC –D DEBUG main.c
(7)編譯C++程序時(shí),編譯器自動(dòng)定義了一個(gè)預(yù)處理器名字__cplusplus(注意前面有兩個(gè)下劃線(xiàn)),因此可以根據(jù)這個(gè)來(lái)判斷該程序是否是C++程序,以便有條件地包含一些代碼,如:

#ifndef MYHEAD_H#define MYHEAD_H#ifdef __cplusplusextern "C" {#endifint DMpostprocessing();#ifdef __cplusplus}#endif#endif

(8)在編譯C程序時(shí),編譯器會(huì)自動(dòng)定義預(yù)處理常量__STDC__。當(dāng)然__cplusplus和__STDC__ 不會(huì)同時(shí)被定義;
(9)另外兩個(gè)比較有用的預(yù)定義常量是__LINE__(記錄文件已經(jīng)被編譯的行數(shù))和__FILE__(包含正在被編譯的文件名稱(chēng))。使用如下:

if(element_count==0) cerr<<"Error:"<<__FILE__   <<":line"<<__LINE__   <<"element_count must be non-zero./n";

(10) __DATE__:編譯日期,當(dāng)前被編譯文件的編譯日期
(11) __TIME__:編譯時(shí)間,當(dāng)前被編譯文件的編譯時(shí)間
格式如:hh:mm:ss

 08:17:05   Oct 31 2006
(12) C庫(kù)頭文件的C++名字總是以字母C開(kāi)頭,后面去掉.h,如assert.h在C++中為cassert;

assert()是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中提供的一個(gè)通用預(yù)處理器宏。常用其來(lái)判斷一個(gè)必需的前提條件,以便程序能夠正確執(zhí)行。與其關(guān)聯(lián)的頭文件是:#include <assert.h>
如:

 assert(filename!=0);

表示:如果后面的程序能夠正確執(zhí)行,需要filename不為0,如是條件為假,即其等于0,斷言失敗,則程序?qū)⑤敵鲈\斷消息,然后終止。

其c++名字是:cassert
C庫(kù)頭文件的C++名字總是以字母C開(kāi)頭
注:在C++中使用C標(biāo)準(zhǔn)庫(kù)中的頭文件時(shí),一定要使用using namespace std;來(lái)使其處在一個(gè)名字空間中,才能正確使用

(13)在C++中頭文件后綴各不相同,因此標(biāo)準(zhǔn)的C++頭文件沒(méi)有指定后綴

4 C++中的文件輸入輸出

頭文件:#include <fstream>

使用文件輸入輸出實(shí)例:

 #include <fstream>//為了打開(kāi)一個(gè)輸出文件,先聲明一個(gè)ofstream類(lèi)型的對(duì)象: ofstream outfile("name-of-file");//為了測(cè)試是否已經(jīng)成功打開(kāi)了一個(gè)文件,如下判斷: //如文件不能打開(kāi)值為false if(!outfile)   cerr<<"Sorry! We were unable to open the file!/n";//為了打開(kāi)一個(gè)輸入文件,先聲明一個(gè)ifstream類(lèi)型的對(duì)象:  ifstream infile("name of file");  if(!infile)   cerr<<"Sorry! We were unable to open the file!/n";一個(gè)簡(jiǎn)單程序:  #include <iostream>  #include <fstream>  #include <string>  int main()  {   ofstream outfile("out_file"); ifstream infile("in_file"); if(!infile){   cerr<<"error:unable to open input file!/n";   return -1; } if(!outfile) {   cerr<<"error:unable to open output file!/n";   return -2; } string word; while (infile>>word)  outfile<<word<<' '; return 0;  }

頭文件里有些什么?
頭文件的使用主要體現(xiàn)在兩個(gè)方面,一個(gè)是重(音chóng)用(即多次使用),另一個(gè)是共用。

那些提供標(biāo)準(zhǔn)庫(kù)函數(shù)的頭文件就是為了重用。很多程序或工程可能會(huì)用到這些標(biāo)準(zhǔn)庫(kù)函數(shù),把它們寫(xiě)在頭文件里面,每次使用的時(shí)候只需要包含已經(jīng)完成的頭文件就可以了。

頭文件的共用主要體現(xiàn)在C++的多文件結(jié)構(gòu)中。由于目前的程序規(guī)模較小,尚不需要用到多文件結(jié)構(gòu),所以在此對(duì)頭文件的共用不作展開(kāi)。有興趣的讀者可以查閱相關(guān)書(shū)籍。
那么,如果我們要自己編寫(xiě)一個(gè)可以重用的頭文件,里面應(yīng)該寫(xiě)些什么呢?

類(lèi)似于標(biāo)準(zhǔn)庫(kù)函數(shù),我們?cè)陬^文件里面應(yīng)該模塊化地給出一些函數(shù)或功能。另外還應(yīng)該包括獨(dú)立實(shí)現(xiàn)這些函數(shù)或功能的常量、變量和類(lèi)型的聲明。

下面我們就來(lái)看一個(gè)頭文件應(yīng)用的實(shí)例:

//shape.h#include "math.h"//在計(jì)算三角形面積時(shí)要用到正弦函數(shù)const double pi=3.14159265358;//常量定義struct circle//類(lèi)型聲明{  double r;};struct square{  double a;};struct rectangle{  double a,b;};struct triangle{  double a,b,c,alpha,beta,gamma;};double perimeter_of_circle(double r)//函數(shù)定義{  return 2*pi*r;}double area_of_circle(double r){  return pi*r*r;}double perimeter_of_square(double a){  return 4*a;}double area_of_square(double a){  return a*a;}double perimeter_of_rectangle(double a,double b){  return 2*(a+b);}double area_of_rectangle(double a,double b){  return a*b;}double perimeter_of_triangle(double a,double b,double c){  return a+b+c;}double area_of_triangle(double a,double b,double gamma){  return sin(gamma/180*pi)*a*b/2;}//main.cpp#include "iostream.h"#include "shape.h"//包含我們編寫(xiě)好的shape.hint main(){  circle c={2};  square s={1};  rectangle r={2,3};  triangle t={3,4,5,36.86989,53.13011,90};  cout <<"Perimeter of circle " <<perimeter_of_circle(c.r) <<endl;  cout <<"Area of square " <<area_of_square(s.a) <<endl;  cout <<"Perimeter of rectangle " <<perimeter_of_rectangle(r.a,r.b) <<endl;  cout <<"Area of triangle " <<area_of_triangle(t.b,t.c,t.alpha) <<endl;  return 0;}

運(yùn)行結(jié)果:

Perimeter of circle 12.5664Area of square 1Perimeter of rectangle 10Area of triangle 6

我們編寫(xiě)好了shape.h頭文件,以后用到計(jì)算圖形周長(zhǎng)或面積的時(shí)候,就不需要重新編寫(xiě)函數(shù)了,只需要包含這個(gè)頭文件就行了。



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲精品a区| 国产区一区二区三| 色妇色综合久久夜夜| 白白色亚洲国产精品| 久久免费精品| 欧美亚洲国产视频| 国产高清一区二区三区四区| 精品国产伦一区二区三区观看体验| 精品丝袜一区二区三区| 亚洲午夜在线播放| 福利在线白白| 国产午夜大地久久| 免费人成视频在线播放| 免费一区二区| 欧美综合在线观看| 欧洲一区二区日韩在线视频观看免费| 婷婷国产在线| 欧美尤物巨大精品爽| 欧美日韩另类字幕中文| 麻豆一区二区在线| 91香蕉视频在线观看| 韩国成人一区| 欧美日本免费一区二区三区| 亚洲一区二区久久久久久久| 亚洲天堂成人在线观看| 欧美中文字幕第一页| 色爱区成人综合网| 视频一区二区三区不卡| 18欧美亚洲精品| 国产精品剧情一区二区在线观看| 中文字幕在线观看第二页| 奇米亚洲午夜久久精品| 欧美黄色网络| 成人三级在线| 中文字幕无码精品亚洲资源网久久| 超级碰在线观看| 豆花视频一区| 女同一区二区| 亚洲欧美日韩国产成人精品影院| 国产自产v一区二区三区c| 精品福利一区二区三区| 欧美 国产 小说 另类| 欧美亚洲精品天堂| 亚洲国产成人影院播放| 国产aⅴ夜夜欢一区二区三区| 亚洲网友自拍偷拍| 青春草在线观看视频| 日韩精品一区国产麻豆| 激情影院在线观看| 国产在线98福利播放视频| 一级二级黄色片| 8×8x拔擦拔擦在线视频网站| 91国偷自产一区二区三区成为亚洲经典| 精品国产二区三区| 欧美一区二区三区免费视频| 日本dvd播放| 国产中文欧美精品| 久久久精品蜜桃| 久久免费一区| 亚洲午夜福利在线观看| 欧美伊人久久久久久午夜久久久久| 久久久久久久欧美精品| 久久精品人妻一区二区三区| 国产视频网址在线| 国产一级做a爱免费视频| 欧美在线观看在线观看| 91精品国产91久久久久久最新| 中国国产一级毛片| 欧美精品在线极品| 野战少妇38p| 欧美重口乱码一区二区| 国产一区玩具在线观看| 91成品人片a无限观看| 欧美做a欧美| 五月天最新网址| 亚洲主播在线| 国产二区在线播放| 亚洲欧美视频在线| 日韩免费在线播放| 国产九九在线视频| 91九色porn| 日韩精品免费一区二区在线观看| 国产欧美三级| 亚洲精品字幕在线观看| 人人妻人人澡人人爽人人精品| 黄频在线免费观看| 美女精品视频在线| 亚洲精品自拍| 精品毛片一区二区三区| 日韩小视频在线观看专区| xfplay每日更新av资源在线| 久久久久久久久丰满| 亚洲第一中文字幕在线观看| 欧美色18zzzzxxxxx| 成人网男人的天堂| 人人妻人人澡人人爽欧美一区| 国产伦精品一区二区三区视频我| 国产一级视频在线观看| 久久精品一区二区三| 国产精品主播一区二区| 日本高清www免费视频| 蜜芽tv福利在线视频| 97超碰青青草| 日韩久久一级片| 日韩国产在线观看| 凹凸av导航大全精品| 日日欢夜夜爽一区| 久久夜色精品亚洲| 亚州av在线播放| 日韩综合av| 精品国产乱码一区二区三| 精品一区二区影视| 欧美少妇bbb| 日韩精品最新网址| 国产v日韩v欧美v| 青青草原一区二区| 日韩欧美亚洲v片| 91超碰在线电影| 这里只有精品在线观看| 日韩电影中文字幕av| 啊啊啊啊啊好爽| 91亚洲精品在线| 麻豆精品网站| 国产精品日日做人人爱| 久久丁香四色| 欧美性猛交xxxx乱大交91| www.1024| 热re99久久精品国产99热| 亚洲专区在线播放| 国产夫妻在线观看| 男人本色网站| 欧美成人免费全部观看天天性色| 欧美国产一级片| 黄色漫画在线免费看| 尤物影院在线播放| 亚洲永久免费av| 欧美日本黄视频| 韩日在线播放| 国产精品国内免费一区二区三区| 可以免费看av的网址| 香蕉视频在线免费看| 国产999精品久久久久久绿帽| 日韩在线观看视频网站| xvideos亚洲| 国产精品精品软件男同| 伊人久久大香线| 日韩欧美在线精品| 黄色av片三级三级三级免费看| 亚洲一区二区三区日韩| 黄色免费网站在线观看| 在线天堂中文字幕| 玖玖爱视频在线| 俺也去.com| 亚洲高清视频免费观看| 亚洲春色在线视频| 97超碰蝌蚪网人人做人人爽| 国产成人一区二区三区小说| 老熟女高潮一区二区三区| 亚洲第一区在线| 亚洲制服国产| cao在线视频| 国产95亚洲| 加勒比色综合久久久久久久久| 亚洲一级片在线播放| 色呦呦在线视频| 国产无遮挡免费视频| 亚洲加勒比久久88色综合| 国产精品h视频| 在线观看免费亚洲| 精品写真视频在线观看| 亚洲欧美高清在线| 国产精品极品美女在线观看免费| 亚洲在线视频网站| 日夜操在线视频| 成人一区二区三区仙踪林| 欧美日产在线观看| 日韩啪啪电影网| 成视频年人免费看黄网站| 国产在线www| 91视频婷婷| 色香蕉在线观看| aaa欧美色吧激情视频| 九九热精彩视频| 怡红院一区二区三区| 日本在线观看网址| 亚洲第一免费看片| 五月婷婷狠狠干| 国产欧美日韩视频在线| 国产成人在线免费观看| 日韩黄色中文字幕| 精品一区二区国语对白| 亚洲线精品久久一区二区三区| 欧美男同视频网| 亚洲成人免费| 国产精品亚洲成在人线| 欧美激情精品久久久六区热门| 在线观看av网站永久| 男人的天堂导航| 精品午夜久久| www.毛片.com| 亚洲69av| 欧美专区第一页| 一区二区三区免费在线观看| 日韩精品一区二区三区在线视频| 欧美国产日韩一二三区| 久久xxx视频| 91视频一区二区三区| 亚洲资源在线观看| 偷窥国产亚洲免费视频| 欧美一区 二区 三区| 俄罗斯精品一区二区三区| 高清欧美性猛交xxxx黑人猛交| 男人天堂999| 制服丝袜激情欧洲亚洲| 天堂精品视频| 免费91在线观看| 欧美精品日韩综合在线| 四虎884aa成人精品最新| 六九午夜精品视频| 久久亚洲国产精品一区二区| 日韩免费视频一区| 91久久麻豆| shkd中文字幕久久在线观看| 成年人在线免费| 久久久国产一区| 国产精品久久久久久久免费看| 国产99午夜精品一区二区三区| 麻豆网站免费观看| 波多野结衣家庭教师在线| 三妻四妾完整版在线观看电视剧| 国产天堂在线观看| 天堂网站www天堂资源在线| 亚洲午夜精品一区 二区 三区| 日韩中文字幕国产精品| 日韩一卡二卡在线| 六月婷婷久久| 精品人妻一区二区三区日产乱码| 国产亚洲精品久久久久久移动网络| 一级久久久久久久| 成年网在线观看免费观看网址| 国产成人99久久亚洲综合精品| 精品一区二区免费视频| 国产精品久久久久久久久久久不卡| 国产精品一线二线三线| 免费福利在线视频| 亚洲综合色一区| 国产一区精品| 久久99欧美| 少妇高潮露脸国语对白| 成人黄色大片在线观看| 欧美性猛交一区二区三区精品| 国产一区二区视频在线看| 欧美在线你懂得| 精品卡一卡卡2卡3网站| 日韩av免费观影| 国产成人97精品免费看片| 91久久久久久久久久久久久| 国产麻豆剧果冻传媒视频杜鹃| 亚洲视频资源在线| 中文字幕一区综合| 一二三四视频在线社区中文字幕2| 在线观看亚洲欧美| 少妇伦子伦精品无吗| 综合国产视频| 亚洲成av人片| 欧美又粗又长又爽做受| 激情小视频在线| 国产狂喷白浆在线观看视频| 国产人成高清视频观看| 久久久久无码国产精品一区| 一区二区三区久久久久| 国产午夜精品一区二区三区四区| 粗大的内捧猛烈进出视频| 日韩jizzz| 日韩欧美视频在线免费观看| 超碰在线12| 免费看国产精品一二区视频| 最新在线你懂的| swag国产精品一区二区| 亚洲一级片网站| 欧美**室bdsm视频| av中文资源在线资源免费观看| 天天摸天天干天天操| 麻豆精品视频在线| 黄色片在线看| 日本免费黄色小视频| 色诱色偷偷久久综合| 狠狠一区二区三区| 日韩欧美国产中文字幕| 性生大片免费观看性| 欧美精品一区二区三区在线播放| 青娱乐国产在线视频| 国产欧美日韩一级| 四虎www成人影院观看| 涩涩视频免费看| 亚洲精品国产片| av免费中文字幕| 激情五月***国产精品| 五月天亚洲激情| 黄色片免费在线| 欧美国产专区| 97超碰青青草| 欧美色图国产精品| 久久久久久77777| 97人人香蕉| 日本高清免费电影一区| 国产欧美久久久精品影院| wwwww在线观看| 在线精品一区二区| 久久久成人av毛片免费观看| 久久久中精品2020中文| 91精品国产入口在线| 影音国产精品| 国产粉嫩一区二区三区在线观看| 国产www在线| 欧美三级又粗又硬| 91精品视频免费观看| 免费在线黄色av| 国产无遮挡裸体免费视频| 天天摸天天碰天天添| 欧美影院一区| 在线观看视频一区二区欧美日韩| 国模 一区 二区 三区| 在线观看av网页| 精品无码一区二区三区电影桃花| 久久91精品国产91久久小草| 黑人另类精品××××性爽| 国产探花一区二区三区|