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

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

解析C++編程中的#include和條件編譯

2020-01-26 14:53:06
字體:
來源:轉載
供稿:網友

文件包含的作用

所謂“文件包含”處理是指一個源文件可以將另外一個源文件的全部內容包含進來,即將另外的文件包含到本文件之中。C++提供了#include命令用來實現“文件包含”的操作。如在file1.cpp中有以下#include命令:

  #include ″file2.cpp″

它的作用見圖示意。


“文件包含”命令是很有用的,它可以節省程序設計人員的重復勞動。

#include命令的應用很廣泛,絕大多數C++程序中都包括#include命令?,F在,庫函數的開發者把這些信息寫在一個文件中,用戶只需將該文件“包含”進來即可(如調用數學函數的,應包含cmath文件―),這就大大簡化了程序,寫一行#include命令的作用相當于寫幾十行、幾百行甚至更多行的內容。這種常用在文件頭部的被包含的文件稱為“標題文件”或“頭部文件”。

頭文件一般包含以下幾類內容:

  • 對類型的聲明。
  • 函數聲明。
  • 內置(inline)函數的定義。
  • 宏定義。用#define定義的符號常量和用const聲明的常變量。
  • 全局變量定義。
  • 外部變量聲明。如entern int a;
  • 還可以根據需要包含其他頭文件。

不同的頭文件包括以上不同的信息,提供給程序設計者使用,這樣,程序設計者不需自己重復書寫這些信息,只需用一行#include命令就把這些信息包含到本文件了,大大地提高了編程效率。由于有了#include命令,就把不同的文件組合在一起,形成一個文件。因此說,頭文件是源文件之間的接口。
include命令的兩種形式

在#include命令中,文件名除了可以用尖括號括起來以外,還可以用雙撇號括起來。#include命令的一般形式為:
    #include <文件名>

    #include ″文件名″
如:
    #include <iostream>

    #include ″iostream″
都是合法的。二者的區別是: 用尖括號時,系統到系統目錄中尋找要包含的文件,如果找不到,編譯系統就給出出錯信息。

有時被包含的文件不一定在系統目錄中,這時應該用雙撇號形式,在雙撇號中指出文件路徑和文件名。

如果在雙撇號中沒有給出絕對路徑,如#include ″file2.c″則默認指用戶當前目錄中的文件。系統先在用戶當前目錄中尋找要包含的文件,若找不到,再按標準方式查找。如果程序中要包含的是用戶自己編寫的文件,宜用雙撇號形式。

對于系統提供的頭文件,既可以用尖括號形式,也可以用雙撇號形式,都能找到被包含的文件,但顯然用尖括號形式更直截了當,效率更高。
關于C++標準庫

在C++編譯系統中,提供了許多系統函數和宏定義,而對函數的聲明則分別存放在不同的頭文件中。如果要調用某一個函數,就必須用#include命令將有關的頭文件包含進來。C++的庫除了保留C的大部分系統函數和宏定義外,還增加了預定義的模板和類。但是不同C++庫的內容不完全相同,由各C++編譯系統自行決定。不久前推出的C++標準將庫的建設也納入標準,規范化了C++標準庫,以便使C++程序能夠在不同的C++平臺上工作,便于互相移植。新的C++標準庫中的頭文件一般不再包括后綴.h,例如:

  #include <string>

但為了使大批已有的C程序能繼續使用,許多C++編譯系統保留了C的頭文件,即提供兩種不同的頭文件,由程序設計者選用。如:

  #include <iostream.h> //C形式的頭文件  #include <iostream> //C++形式的頭文件


效果基本上是一樣的。建議盡量用符合C++標準的形式,即在包含C++頭文件時一般不用后綴。如果用戶自己編寫頭文件,可以用.h為后綴。

C++條件編譯#ifdef #else
一般情況下,在進行編譯時對源程序中的每一行都要編譯。但是有時希望程序中某一部分內容只在滿足一定條件時才進行編譯,也就是指定對程序中的一部分內容進行編譯的條件。如果不滿足這個條件,就不編譯這部分內容。這就是“條件編譯”。

有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。

條件編譯命令常用的有以下形式:
1) #ifdef 標識符
    程序段1
#else
    程序段2
#endif

它的作用是當所指定的標識符已經被#define命令定義過,則在程序編譯階段只編譯程序段1,否則編譯程序段2。#endif用來限定#ifdef命令的范圍。其中#else部分也可以沒有。

2) #if 表達式
    程序段1
#else
    程序段2
#endif

它的作用是當指定的表達式值為真(非零)時就編譯程序段1,否則編譯程序段2??梢允孪冉o定一定條件,使程序在不同的條件下執行不同的功能。

【例】在調試程序時,常常希望輸出一些所需的信息,而在調試完成后不再輸出這些信息,可以在源程序中插入條件編譯段。下面是一個簡單的示例。

#include <iostream>using namespace std;#define RUN //在調試程序時使之成為注釋行int main( ){  int x=1, y=2, z=3;  #ifndef RUN //本行為條件編譯命令  cout<<"x="<<x<<", y="<<y<<", z="<<z<<"/n"; //在調試程序時需要輸出這些信息  #endif //本行為條件編譯命令  cout<<"x*y*z="<<x*y*z<<endl;}

第3行用#define命令的目的不在于用RUN代表一個字符串,而只是表示已定義過RUN,因此RUN后面寫什么字符串都無所謂,甚至可以不寫字符串。在調試程序時去掉第3行(或在行首加//,使之成為注釋行),由于無此行,故未對RUN定義,第6行據此決定編譯第7行,運行時輸出x,y,z的值,以便用戶分析有關變量當前的值。運行程序輸出:

  x=1, y=2, z=3  x*y*z=6


在調試完成后,在運行之前,加上第3行,重新編譯,由于此時RUN已被定義過,則該cout語句不被編譯,因此在運行時不再輸出x,y,z的值。運行情況為:

x*y*z=6

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲视频在线观看| 国产精品爱久久久久久久| 久久精品国产亚洲一区二区| 亚洲精品v欧美精品v日韩精品| 国产精品免费观看在线| 亚洲肉体裸体xxxx137| 亚洲国产精品va在线| 日韩亚洲一区二区| 久久综合88中文色鬼| 亚洲第一视频网站| 日韩中文字幕第一页| 91精品国产高清久久久久久久久| 久久久噜久噜久久综合| 久久这里只有精品视频首页| 久久精品视频在线观看| 久久久欧美一区二区| 亚洲人成人99网站| 成人激情在线观看| 久久国产精品久久久| 精品视频在线播放| 欧美在线视频网站| 视频直播国产精品| 热99精品只有里视频精品| 久久国产精品免费视频| 久久99青青精品免费观看| 国产亚洲成av人片在线观看桃| 亚洲香蕉成人av网站在线观看| 欧美在线视频观看免费网站| 久久久99免费视频| 午夜精品一区二区三区av| 亚洲a级在线观看| 国产精品久久久久久久久久东京| 亚洲天堂av综合网| 日本一区二区不卡| 久久精品最新地址| 欧美成人免费小视频| 91大神在线播放精品| 欧美刺激性大交免费视频| 亚洲一级片在线看| 亚洲欧美国产制服动漫| 中文字幕日韩专区| 亚洲欧洲黄色网| 午夜精品久久久久久久久久久久久| 亚洲第一国产精品| 国内精品伊人久久| 国产精品视频午夜| 欧美性猛交99久久久久99按摩| 亚洲第一福利网站| 精品国产欧美成人夜夜嗨| 国产成人一区二区在线| 日韩美女在线播放| 97香蕉超级碰碰久久免费的优势| 久久99精品久久久久久青青91| 亚洲福利精品在线| 在线看欧美日韩| 久久精品国产精品亚洲| 日韩中文字幕亚洲| 亚洲精品免费在线视频| 国产精品91在线观看| 亚洲第一在线视频| 欧美另类第一页| 色婷婷av一区二区三区久久| 欧美丰满少妇xxxxx做受| 91九色蝌蚪国产| 国模精品一区二区三区色天香| 久久久久久久一| 久久99久久久久久久噜噜| 69av在线视频| 欧美色播在线播放| 91久久国产精品| 日韩av免费网站| 亚洲精品999| 国产精品高潮在线| 精品露脸国产偷人在视频| 精品成人乱色一区二区| 亚洲日韩中文字幕| 欧美日韩精品在线| 亚洲人成电影网站色xx| 疯狂做受xxxx欧美肥白少妇| 精品国产一区二区三区四区在线观看| 欧美大胆在线视频| 久久久久久久久久久成人| 亚洲va电影大全| 中文字幕视频在线免费欧美日韩综合在线看| 久久久噜噜噜久久久| 国产成人在线一区二区| 国产精品久久久久久网站| 国产一区二区三区精品久久久| 亚洲国产精品嫩草影院久久| 永久555www成人免费| 中文字幕免费国产精品| 国产成人小视频在线观看| 久久大大胆人体| 亚洲视频精品在线| 久久久免费电影| 欧美黑人视频一区| 超碰97人人做人人爱少妇| 国产亚洲欧美日韩美女| 欧美福利在线观看| 亚洲精品乱码久久久久久按摩观| 日韩中文字幕在线视频| 日韩视频免费在线观看| 久久视频中文字幕| 欧美高清一级大片| 亚洲精品国产拍免费91在线| 国产精品手机播放| 日韩在线欧美在线国产在线| 精品久久久久久中文字幕大豆网| 精品爽片免费看久久| 亚洲精品视频在线播放| 亚洲自拍另类欧美丝袜| 欧美国产亚洲视频| 日韩av综合网| 欧美性色xo影院| 欧美性videos高清精品| 成人做爰www免费看视频网站| 国产精品www色诱视频| 69影院欧美专区视频| 亚洲精品久久7777777| 国产精品高潮呻吟久久av无限| 亚洲第一色中文字幕| 色香阁99久久精品久久久| 亚洲成人中文字幕| 国产精品91久久久久久| 欧美国产精品va在线观看| 亚洲国产私拍精品国模在线观看| 日韩在线观看免费高清完整版| 欧美电影在线播放| 成人网中文字幕| 午夜精品久久久久久久久久久久久| 国产精品白嫩美女在线观看| 日韩精品欧美激情| 国产丝袜一区二区三区免费视频| 91在线免费观看网站| 成人午夜激情免费视频| 日本久久久久久久久| 亚洲人成毛片在线播放| 日韩有码在线视频| 一区二区三区回区在观看免费视频| 91免费精品国偷自产在线| 国产99久久精品一区二区永久免费| 国产精自产拍久久久久久| 欧美在线视频播放| 91精品成人久久| 国产婷婷色综合av蜜臀av| 亚洲精品免费av| 国产精品极品美女在线观看免费| 亚洲福利视频专区| 亚洲午夜性刺激影院| 亚洲色图17p| 在线成人激情视频| 91麻豆国产语对白在线观看| 亚洲自拍偷拍视频| 国产精品美女久久久免费| 亚洲人成在线观| 亚洲女在线观看| 成人午夜黄色影院| 91牛牛免费视频| 色噜噜狠狠色综合网图区| 精品女同一区二区三区在线播放| 最近2019免费中文字幕视频三| 亚洲va久久久噜噜噜| 欧美日韩国产91| 日韩中文字幕网|