最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

EasyC++編寫頭文件

 更新時(shí)間:2021年12月17日 08:44:55   作者:梁唐  
這篇文章主要介紹了C++編寫頭文件,在一個(gè)C++程序中,只包含兩類文件——.cpp文件和.h文件。其中,.cpp文件被稱作C++源文件,里面放的都是C++的源代碼;而.h文件則被稱作C++頭文件,里面放的也是C++的源代碼,感興趣的小伙伴一起來(lái)看下面文章的詳細(xì)介紹吧

文章轉(zhuǎn)自公眾號(hào):Coder梁(ID:Coder_LT)

我們之前做的左右示例都是在一個(gè)單獨(dú)的cpp文件當(dāng)中完成的,當(dāng)我們要做一個(gè)相對(duì)復(fù)雜或大型的項(xiàng)目時(shí),我們顯然不能把所有代碼都寫在一個(gè)cpp里。這就需要我們拆分代碼,但代碼按照邏輯劃分,寫入不同的cpp文件當(dāng)中。

在我們編譯的時(shí)候,我們可以將這些cpp文件分別單獨(dú)編譯,最后再連接到一起。這樣做的好處是,當(dāng)我們只修改了某一個(gè)文件的時(shí)候,可以只用單獨(dú)編譯那一個(gè)文件,不會(huì)影響其他文件的編譯結(jié)果。一般來(lái)說(shuō)大型項(xiàng)目,都會(huì)使用一下自動(dòng)化的編譯工具,比如make等,不會(huì)手動(dòng)執(zhí)行編譯過程,但對(duì)于這其中的一些細(xì)節(jié),還是需要有所了解。

我們來(lái)看C++ primer當(dāng)中提供的一個(gè)例子。

現(xiàn)在我們要實(shí)現(xiàn)一個(gè)將直接坐標(biāo)轉(zhuǎn)化成極坐標(biāo)的功能,我們需要定義兩個(gè)結(jié)構(gòu)體分別表示直角坐標(biāo)和極坐標(biāo),另外還需要實(shí)現(xiàn)從直接坐標(biāo)到極坐標(biāo)的轉(zhuǎn)化。

顯然相對(duì)于主體程序而言,這部分代碼是獨(dú)立的,所以我們可以把它們放入一個(gè)單獨(dú)的cpp文件當(dāng)中。首先要明確的是,main()函數(shù)和其他函數(shù)都用到了同一個(gè)結(jié)構(gòu)體,因此兩個(gè)cpp文件都需要包含該結(jié)構(gòu)體的聲明。顯然拷貝代碼是很糟糕的選擇,比較好的做法是將結(jié)構(gòu)體的聲明寫在頭文件當(dāng)中,通過#include語(yǔ)句引入。

這樣的話整體的代碼就分成三個(gè)部分:

  • 頭文件:包含結(jié)構(gòu)體聲明、函數(shù)聲明
  • coordin.cpp:包含坐標(biāo)系轉(zhuǎn)化相關(guān)的代碼
  • main.cpp:主體程序

在之后面向?qū)ο蟮恼鹿?jié)當(dāng)中, 我們將會(huì)經(jīng)常用到這樣的代碼結(jié)構(gòu)。

對(duì)于頭文件當(dāng)中的內(nèi)容有嚴(yán)格的限制,由于頭文件可能會(huì)被多個(gè)cpp文件引入,所以我們不能將函數(shù)的實(shí)現(xiàn)或參數(shù)的定義放入頭文件當(dāng)中。因?yàn)橥粋€(gè)程序中包含同一個(gè)函數(shù)的多個(gè)定義會(huì)引發(fā)報(bào)錯(cuò),參數(shù)同理。

只有以下內(nèi)容可以寫入頭文件當(dāng)中:

  • 函數(shù)原型(函數(shù)聲明)
  • #defineconst定義的符號(hào)常量
  • 結(jié)構(gòu)體聲明
  • 類聲明
  • 模板聲明
  • 內(nèi)聯(lián)函數(shù)(inline

在同一個(gè)文件當(dāng)中只能引入一個(gè)頭文件一次,但有的時(shí)候由于引用依賴的原因,可能會(huì)導(dǎo)致重復(fù)引入。比如引入A和B頭文件,B頭文件中引入了A,導(dǎo)致A被引入兩次。

為了解決這個(gè)問題,我們可以加入預(yù)編譯指令#ifndef,含義是if not defined,判斷某定義是否存在。只有當(dāng)定義不存在時(shí)才會(huì)直接#ifndef#endif之間的語(yǔ)句:

#ifndef COORDIN_H_
// statements
#endif


一般情況下我們使用#define創(chuàng)建符號(hào)常量:

#define MAXI 4096


但由于這里我們只是用來(lái)區(qū)分是否引入,所以只需要名稱即可:

#ifndef COORDIN_H
#define COORDIN_H
// todo
#endif


這樣,當(dāng)引入一次之后,COORDIN_H即被定義,那么下次就不會(huì)再執(zhí)行這段代碼。

最后,我們寫出完整的頭文件代碼:

#

ifndef COORDIN_H__
#define COORDIN_H__

struct polar {
    double distance, angle;
};

struct rect {
    double x, y;
};

polar rect_to_polar(rect xpros);
void show_polar(polar dapos);

#endif

到此這篇關(guān)于C++編寫頭文件的文章就介紹到這了,更多相關(guān)C++編寫頭文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++11的for循環(huán),以及范圍Range類的簡(jiǎn)單實(shí)現(xiàn)

    C++11的for循環(huán),以及范圍Range類的簡(jiǎn)單實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇C++11的for循環(huán),以及范圍Range類的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的, 現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-06-06
  • Microsoft Visual C++ 程序的部署方法

    Microsoft Visual C++ 程序的部署方法

    由Microsoft Visual C++編譯的程序動(dòng)態(tài)鏈接到C運(yùn)行時(shí)(/MD 或 /MDd),它必須運(yùn)行DLL的一份拷貝(通常被叫作MSVCRT.DLL 或 MSVCRxx.DLL,其中xx代表Visual C++的版本)
    2013-04-04
  • C語(yǔ)言編程中的聯(lián)合體union入門學(xué)習(xí)教程

    C語(yǔ)言編程中的聯(lián)合體union入門學(xué)習(xí)教程

    這篇文章主要介紹了C語(yǔ)言編程中的聯(lián)合體union入門學(xué)習(xí)教程,也是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-12-12
  • C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言整形提升舉例詳解

    C語(yǔ)言整形提升舉例詳解

    對(duì)于整形提升,高位需要補(bǔ)位,那么補(bǔ)什么呢,無(wú)符號(hào)數(shù)高位補(bǔ)0,有符號(hào)數(shù)高位補(bǔ)1,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言整形提升的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C++排序算法之冒泡排序解析

    C++排序算法之冒泡排序解析

    這篇文章主要介紹了C++排序算法之冒泡排序解析,從左到右,相鄰兩數(shù)兩兩比較,若下標(biāo)小的數(shù)大于下標(biāo)大的數(shù)則交換,將最大的數(shù)放在數(shù)組的最后一位,,再次遍歷數(shù)組,將第二大的數(shù),放在數(shù)組倒數(shù)第二的位置,以此類推,直到數(shù)組有序需要的朋友可以參考下
    2023-10-10
  • C++游戲教程基本技巧之隨機(jī)化詳解

    C++游戲教程基本技巧之隨機(jī)化詳解

    在小游戲的制作中時(shí)常常會(huì)要用到隨機(jī)數(shù),這篇文章就來(lái)和大家談?wù)凜++中這個(gè)所謂的“隨機(jī)”。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • C語(yǔ)言如何計(jì)算字符串長(zhǎng)度

    C語(yǔ)言如何計(jì)算字符串長(zhǎng)度

    這篇文章主要介紹了C語(yǔ)言如何計(jì)算字符串長(zhǎng)度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 學(xué)習(xí)C++編程的必備軟件

    學(xué)習(xí)C++編程的必備軟件

    本文給大家分享的是作者在學(xué)習(xí)使用C++進(jìn)行編程的時(shí)候所用到的一些常用的軟件,這里推薦給大家
    2017-04-04
  • C++ 二維數(shù)組傳參的四種方式

    C++ 二維數(shù)組傳參的四種方式

    C++的二維數(shù)組里面,通過用數(shù)組名傳參,傳過去后數(shù)組名會(huì)退化成一個(gè)一維數(shù)組指針,所以C++的函數(shù)參數(shù)不能像C語(yǔ)言一樣去寫,本文主要介紹了C++ 二維數(shù)組傳參的四種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04

最新評(píng)論

沾化县| 石首市| 斗六市| 林口县| 太仓市| 潞城市| 光山县| 台中县| 湘潭县| 汉中市| 洞头县| 尼木县| 外汇| 连城县| 祁连县| 孟州市| 永靖县| 句容市| 新宁县| 大邑县| 区。| 奉化市| 海南省| 乐清市| 五河县| 淮北市| 太仓市| 讷河市| 禹州市| 新安县| 九江市| 义乌市| 石楼县| 镶黄旗| 永济市| 交口县| 乌恰县| 且末县| 峨眉山市| 抚顺市| 斗六市|