国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

C++頭文件、源文件、#include

2020-05-23 14:26:37
字體:
來源:轉載
供稿:網友

頭文件和源文件

由于頭文件是為了重用,所以在一個復雜的程序中,頭文件可能會被間接地重復包含。如果頭文件里面都是函數聲明,那問題還不大。如果頭文件里面有函數定義(如程序11.2),那么就會出現函數被重復定義的錯誤,程序將無法運行。我們可以采用函數聲明和定義分離的方式:把所有的聲明都放在shape.h中,把所有的定義放在shape.cpp中。注意必須在shape.cpp中包含shape.h,否則在編譯連接時會發生錯誤。我們在使用時仍然包含shape.h,但由于函數的定義并不在該頭文件中,所以就不會被重復定義了。

細說#include

我們幾乎每次編寫程序的時候都要用到#include命令,那么這條命令到底是什么意思呢?

#include是一條編譯預處理命令。什么叫編譯預處理命令呢?我們知道,程序中的每一句語句會在運行的時候能得到體現。比如變量或函數的聲明會創建一個變量或者函數,輸出語句會在屏幕上輸出字符。然而編譯預處理命令卻不會在運行時體現出來,因為它是寫給編譯器的信息,而不是程序中需要執行的語句。編譯預處理命令不僅僅只有#include一條,在C++中,所有以#開頭的命令都是編譯預處理命令,比如#if、#else、#endif、#ifdef、#ifndef、#undef和#define等等。

當編譯器遇到了#include命令后,就把該命令中的文件插入到當前的文件中。不難想象,程序11.2的main.cpp文件實質上包含了shape.h文件中的所有語句。所以它能夠順利調用shape.h文件中的各個函數。

試試看:
1、把程序11.2的main.cpp中#include "iostream.h"移動到shape.h中,是否會影響程序的運行?為什么?
2、如果有兩個頭文件a.h和b.h,在a.h中有#include "b.h",在b.h中有#include "a.h",那么在編譯包含它們的源文件時,會發生什么錯誤?
結論:互相包含的兩個頭文件在編譯的時候會導致錯誤甚至死機。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏山县| 兰考县| 太和县| 扶余县| 孟津县| 磴口县| 恩施市| 黄冈市| 南宁市| 饶平县| 资源县| 无锡市| 孙吴县| 翼城县| 昌吉市| 鹤岗市| 原平市| 五台县| 临朐县| 满洲里市| 晋州市| 株洲市| 宝坻区| 年辖:市辖区| 高平市| 来安县| 定陶县| 丹凤县| 宁波市| 郧西县| 望城县| 修武县| 龙川县| 福海县| 通榆县| 普定县| 罗定市| 湘乡市| 岳阳市| 苏尼特左旗| 怀宁县|