91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++怎樣編寫頭文件

發布時間:2021-12-18 16:12:46 來源:億速云 閱讀:824 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關C++怎樣編寫頭文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

我們之前做的左右示例都是在一個單獨的cpp文件當中完成的,當我們要做一個相對復雜或大型的項目時,我們顯然不能把所有代碼都寫在一個cpp里。這就需要我們拆分代碼,但代碼按照邏輯劃分,寫入不同的cpp文件當中。

在我們編譯的時候,我們可以將這些cpp文件分別單獨編譯,最后再連接到一起。這樣做的好處是,當我們只修改了某一個文件的時候,可以只用單獨編譯那一個文件,不會影響其他文件的編譯結果。一般來說大型項目,都會使用一下自動化的編譯工具,比如make等,不會手動執行編譯過程,但對于這其中的一些細節,還是需要有所了解。

我們來看C++ primer當中提供的一個例子。

現在我們要實現一個將直接坐標轉化成極坐標的功能,我們需要定義兩個結構體分別表示直角坐標和極坐標,另外還需要實現從直接坐標到極坐標的轉化。

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

這樣的話整體的代碼就分成三個部分:

  • 頭文件:包含結構體聲明、函數聲明

  • coordin.cpp:包含坐標系轉化相關的代碼

  • main.cpp:主體程序

在之后面向對象的章節當中, 我們將會經常用到這樣的代碼結構。

對于頭文件當中的內容有嚴格的限制,由于頭文件可能會被多個cpp文件引入,所以我們不能將函數的實現或參數的定義放入頭文件當中。因為同一個程序中包含同一個函數的多個定義會引發報錯,參數同理。

只有以下內容可以寫入頭文件當中:

  • 函數原型(函數聲明)

  • #defineconst定義的符號常量

  • 結構體聲明

  • 類聲明

  • 模板聲明

  • 內聯函數(inline

在同一個文件當中只能引入一個頭文件一次,但有的時候由于引用依賴的原因,可能會導致重復引入。比如引入A和B頭文件,B頭文件中引入了A,導致A被引入兩次。

為了解決這個問題,我們可以加入預編譯指令#ifndef,含義是if not defined,判斷某定義是否存在。只有當定義不存在時才會直接#ifndef#endif之間的語句:

#ifndef COORDIN_H_
// statements
#endif

一般情況下我們使用#define創建符號常量:

#define MAXI 4096

但由于這里我們只是用來區分是否引入,所以只需要名稱即可:

#ifndef COORDIN_H
#define COORDIN_H
// todo
#endif

這樣,當引入一次之后,COORDIN_H即被定義,那么下次就不會再執行這段代碼。

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

#

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

看完上述內容,你們對C++怎樣編寫頭文件有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

建瓯市| 绥宁县| 商南县| 夏津县| 长垣县| 沙雅县| 和硕县| 历史| 青龙| 石门县| 苍南县| 广灵县| 岳池县| 将乐县| 繁峙县| 麻江县| 黄浦区| 伊通| 于都县| 平泉县| 合川市| 黑龙江省| 汝南县| 介休市| 竹溪县| 华阴市| 抚宁县| 沂水县| 荥经县| 延安市| 余庆县| 治多县| 新疆| 舟山市| 新兴县| 奎屯市| 林周县| 信丰县| 武安市| 资兴市| 河曲县|