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

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

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

2020-02-24 14:28:42
字體:
來源:轉載
供稿:網友

在C++編程的過程中,我們隨著項目的規模越來越大,代碼的管理和分析也越來越困難,下文是武林技術頻道為大家整理的C++中頭文件的概念與基本編寫的方法,一起進入下面學習吧!

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

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

#ifndef MYHEAD_H#define MYHEAD_H……//頭文件中的內容#endif

?

(1)#ifndef:
?? 指示符#ifndef用來檢查頭文件的內容是否在前面已經被定義過,如果定義過,則#ifndef與#endif之間的語句將不被執行.所以習慣上要把頭文件的定義寫在這兩個語句之間.
如:對于MYHEAD.H這個頭文件

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

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

 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,則其中包含的兩個語句都將被執行,如果沒有定義,則其中的兩個輸出語句不被執行。

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

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

(8)在編譯C程序時,編譯器會自動定義預處理常量__STDC__。當然__cplusplus和__STDC__ 不會同時被定義;
(9)另外兩個比較有用的預定義常量是__LINE__(記錄文件已經被編譯的行數)和__FILE__(包含正在被編譯的文件名稱)。使用如下:

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

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

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

assert()是C語言標準庫中提供的一個通用預處理器宏。常用其來判斷一個必需的前提條件,以便程序能夠正確執行。與其關聯的頭文件是:#include <assert.h>
如:

 assert(filename!=0);

表示:如果后面的程序能夠正確執行,需要filename不為0,如是條件為假,即其等于0,斷言失敗,則程序將輸出診斷消息,然后終止。

其c++名字是:cassert
C庫頭文件的C++名字總是以字母C開頭
注:在C++中使用C標準庫中的頭文件時,一定要使用using namespace std;來使其處在一個名字空間中,才能正確使用

(13)在C++中頭文件后綴各不相同,因此標準的C++頭文件沒有指定后綴

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

頭文件:#include <fstream>

使用文件輸入輸出實例:

 #include <fstream>//為了打開一個輸出文件,先聲明一個ofstream類型的對象: ofstream outfile("name-of-file");//為了測試是否已經成功打開了一個文件,如下判斷: //如文件不能打開值為false if(!outfile)   cerr<<"Sorry! We were unable to open the file!/n";//為了打開一個輸入文件,先聲明一個ifstream類型的對象:  ifstream infile("name of file");  if(!infile)   cerr<<"Sorry! We were unable to open the file!/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;  }

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

那些提供標準庫函數的頭文件就是為了重用。很多程序或工程可能會用到這些標準庫函數,把它們寫在頭文件里面,每次使用的時候只需要包含已經完成的頭文件就可以了。

頭文件的共用主要體現在C++的多文件結構中。由于目前的程序規模較小,尚不需要用到多文件結構,所以在此對頭文件的共用不作展開。有興趣的讀者可以查閱相關書籍。
那么,如果我們要自己編寫一個可以重用的頭文件,里面應該寫些什么呢?

類似于標準庫函數,我們在頭文件里面應該模塊化地給出一些函數或功能。另外還應該包括獨立實現這些函數或功能的常量、變量和類型的聲明。

下面我們就來看一個頭文件應用的實例:

//shape.h#include "math.h"http://在計算三角形面積時要用到正弦函數const double pi=3.14159265358;//常量定義struct circle//類型聲明{  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)//函數定義{  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"http://包含我們編寫好的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;}

運行結果:

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

我們編寫好了shape.h頭文件,以后用到計算圖形周長或面積的時候,就不需要重新編寫函數了,只需要包含這個頭文件就行了。

以上就是關于C++中頭文件的概念與基本編寫的方法,你了解了嗎?如果你還想了解更多C++的知識,建議你可以時常關注武林技術頻道哦!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
55夜色66夜色国产精品视频| 一区二区三区视频免费在线观看| 欧美另类极品videosbestfree| 日韩在线观看免费全集电视剧网站| 日韩精品一二三四区| 亚洲一区亚洲二区| 亚洲一区二区国产| 欧美日韩一区免费| www高清在线视频日韩欧美| 91wwwcom在线观看| 成人免费福利视频| 日韩一区二区三区国产| 国产亚洲欧美视频| 久久久久久999| 中文字幕日韩电影| 国产精品一区二区在线| 国产精品视频成人| 久久综合伊人77777尤物| 久久久久久久久久久国产| 中文欧美日本在线资源| 亚洲综合一区二区不卡| 欧美午夜女人视频在线| 人人爽久久涩噜噜噜网站| 91av视频在线观看| 国产日韩一区在线| 日本在线精品视频| 88国产精品欧美一区二区三区| 正在播放欧美视频| 欧美整片在线观看| 日韩欧美在线视频日韩欧美在线视频| 这里只有精品丝袜| 亚洲精品aⅴ中文字幕乱码| 欧美激情在线狂野欧美精品| 日日摸夜夜添一区| 国产精品午夜一区二区欲梦| 97国产精品人人爽人人做| 欧美国产视频日韩| 国产日韩在线免费| 欧美激情视频播放| 亚洲剧情一区二区| 亚洲免费av电影| 日韩午夜在线视频| 国产精品嫩草影院一区二区| 亚洲国产精品一区二区三区| 日产精品99久久久久久| 日本国产精品视频| 疯狂欧美牲乱大交777| 91极品女神在线| 日韩av免费在线播放| 热门国产精品亚洲第一区在线| 不卡av电影在线观看| 日韩中文字幕国产精品| 亚洲free性xxxx护士hd| 国产精品视频久| 亚洲欧美国产精品va在线观看| 91亚洲国产成人久久精品网站| 国产精品网址在线| 亚洲国产成人爱av在线播放| 超碰97人人做人人爱少妇| 国产精品日韩在线播放| 日韩国产在线看| 日韩欧美在线视频观看| 色久欧美在线视频观看| 中文.日本.精品| 日韩在线观看网址| 日韩av免费看网站| 欧美区在线播放| 精品国产成人av| 91国产美女在线观看| 欧美老女人性生活| 91色精品视频在线| 久久久91精品国产一区不卡| 久久久电影免费观看完整版| 日韩免费av片在线观看| 国产欧美精品一区二区三区介绍| 欧美中文字幕在线播放| 亚洲激情第一页| 日韩成人中文字幕在线观看| 激情懂色av一区av二区av| 亚洲精品成a人在线观看| 亚洲国产精品大全| 国产在线观看精品一区二区三区| 91在线视频一区| 影音先锋欧美在线资源| 欧美日韩激情网| 亚洲男人天堂2024| 一区二区在线视频播放| 亚洲免费电影在线观看| 精品国产91久久久久久老师| 国内精品国产三级国产在线专| 69国产精品成人在线播放| 国产精选久久久久久| 欧美激情精品久久久久久黑人| 亚洲欧美中文日韩在线v日本| 97成人超碰免| 成人性生交大片免费看小说| 色无极影院亚洲| 一区二区三区视频观看| 国产精品爽黄69天堂a| 国产成人精品最新| 在线视频欧美日韩| 欧美激情第1页| 国产精品九九九| 国模吧一区二区三区| 久久亚洲精品小早川怜子66| 欧美一级视频免费在线观看| 日本三级韩国三级久久| 欧美极品少妇xxxxx| 久久免费观看视频| 国产成人精品久久亚洲高清不卡| 亚洲欧洲黄色网| 高跟丝袜欧美一区| 日韩视频免费在线观看| 久久精品国产v日韩v亚洲| 亚洲欧美日韩精品久久亚洲区| 久久综合88中文色鬼| 91av在线网站| 久久影院在线观看| 韩日精品中文字幕| 国产精品爽黄69天堂a| 日韩在线观看网址| 国产精品天天狠天天看| 久久久久久久色| 亚洲xxx视频| 国产精品h在线观看| 国产精品亚洲激情| 久久精品福利视频| 国产区精品在线观看| 日韩欧美亚洲国产一区| 欧美日韩中文字幕日韩欧美| 久久久电影免费观看完整版| 国产精品最新在线观看| 91成人天堂久久成人| 亚洲成人aaa| 亚洲国产又黄又爽女人高潮的| 欧美久久久精品| 91精品久久久久久久久久久| 57pao国产精品一区| 国产一区二区三区直播精品电影| 成人激情黄色网| 国产成+人+综合+亚洲欧美丁香花| 88国产精品欧美一区二区三区| 成人精品一区二区三区电影免费| 亚洲精品一区二区三区婷婷月| 国产精品自产拍高潮在线观看| 日韩一级裸体免费视频| 91精品久久久久久久久久| 欧美日韩ab片| 视频直播国产精品| 国产91露脸中文字幕在线| 日本韩国欧美精品大片卡二| 国产精品日韩精品| 久久资源免费视频| 欧美性猛交xxxx富婆| 欧美日韩一区二区三区在线免费观看| 夜夜躁日日躁狠狠久久88av| 日韩在线中文字| 国产精品国产三级国产专播精品人| 亚洲女在线观看| 久久偷看各类女兵18女厕嘘嘘| 亚洲小视频在线观看| 国产免费观看久久黄| 国产精品一二三视频| 欧亚精品在线观看|