c++ 頭文件

目錄

防止頭文件重復包含

頭文件的作用

如何讓程序的多個 .cpp 文件之間共享全局變量(可能是 int、結構體、數組、指針、類對象)?

防止頭文件重復包含

為什么要防止頭問件重復包含?

?

?

?

當然一般也不會把變量定義放到頭問件,那為什么還需要防止重復包含??

?

?

頭文件的作用

?頭文件的主要作用與說明

?C++ 函數,函數分文件編寫_c++構造函數不同文件-CSDN博客

?C++類和對象--封裝,類分文件編寫_實現一個類如何設置頭文件封裝-CSDN博客

雜記 define,typedef,static,extern,memset,ifndef,遞歸,邏輯與&&,整型提升,算術轉換,棧區,高地址_ifndef &&-CSDN博客?

作用分類說明例子
1. 函數/類聲明提供函數原型或類接口,讓其他 .c/.cpp 文件知道如何使用它們int add(int, int);class Person { void say(); };
2. 類型定義定義結構體(struct)、枚舉(enum)、typedefusing 等類型typedef unsigned int uint;struct Point { int x, y; };
3. 變量聲明使用 extern 聲明全局變量,使多個源文件共享該變量extern int g_count;
4. 宏定義定義常量或代碼片段,提高代碼可讀性與維護性#define PI 3.14159#define MAX(a,b) ((a)>(b)?(a):(b))
5. 模板定義模板函數或類定義通常必須放在頭文件中template<typename T> T max(T a, T b) { return a > b ? a : b; }
6. 內聯函數提高性能,允許編譯器將函數體展開到調用處inline int square(int x) { return x * x; }
7. 命名空間聲明定義邏輯作用域,避免命名沖突namespace math { int add(int, int); }
8. 提高復用性多個源文件共享接口,避免重復編寫聲明#include "utils.h" 讓多個文件重用工具函數接口
9. 分離接口與實現將接口和實現分離,提高模塊化與可維護性.h 里寫聲明,.cpp 里寫實現
10. 條件編譯保護防止頭文件被重復包含引起重復定義錯誤#ifndef HEADER_H ... #define HEADER_H ... #endif

第3條不好。一般不這樣用

extern 聲明全局變量雖然合法并常見,但確實存在一些“壞味道”,在現代 C++ 開發中不推薦廣泛使用它。

如何讓程序的多個 .cpp 文件之間共享全局變量(可能是 int、結構體、數組、指針、類對象)?

?

?

?

?

?

?

?

?

或者

static?局部變量:

  • 只在第一次進入函數時執行初始化

  • 之后不再初始化,而是保留之前的值

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82958.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入解析 JavaScript 中 var、let、const 的核心區別與實踐應用

一、歷史背景與語法基礎 JavaScript 作為動態弱類型語言&#xff0c;變量聲明機制經歷了從 ES5 到 ES6 的重大變革。在 ES5 及更早版本中&#xff0c;var 是唯一的變量聲明方式&#xff0c;而 ES6&#xff08;2015 年&#xff09;引入了 let 和 const&#xff0c;旨在解決 var…

【Linux庖丁解牛】—自定義shell的編寫!

1. 打印命令行提示符 在我們使用系統提供的shell時&#xff0c;每次都會打印出一行字符串&#xff0c;這其實就是命令行提示符&#xff0c;那我們自定義的shell當然也需要這一行字符串。 這一行字符串包含用戶名&#xff0c;主機名&#xff0c;當前工作路徑&#xff0c;所以&a…

應用案例 | 設備分布廣, 現場維護難? 宏集Cogent DataHub助力分布式鍋爐遠程運維, 讓現場變“透明”

在日本&#xff0c;能源利用與環保問題再次成為社會關注的焦點。越來越多的工業用戶開始尋求更高效、可持續的方式來運營設備、管理能源。而作為一家專注于節能與自動化系統集成的企業&#xff0c;日本大阪的TESS工程公司給出了一個值得借鑒的答案。 01 鍋爐遠程監控難題如何破…

【OSG學習筆記】Day 16: 骨骼動畫與蒙皮(osgAnimation)

骨骼動畫基礎 骨骼動畫是 3D 計算機圖形中常用的技術&#xff0c;它通過以下兩個主要組件實現角色動畫。 骨骼系統 (Skeleton)&#xff1a;由層級結構的骨頭組成&#xff0c;類似于人體骨骼蒙皮 (Mesh Skinning)&#xff1a;將模型網格頂點綁定到骨骼上&#xff0c;使骨骼移動…

jdk同時安裝多個版本并自由切換

一、安裝不同版本的JDK 二、配置環境變量&#xff08;多版本JDK&#xff09; 1. 新建版本專用環境變量&#xff08;用于切換&#xff09; 操作位置&#xff1a;系統變量 > 新建 變量名&#xff1a;JAVA_HOME_1.8 變量值&#xff1a;JDK 8安裝路徑變量名&#xff1a;JAVA1…

java中裝飾模式

目錄 一 裝飾模式案例說明 1.1 說明 1.2 代碼 1.2.1 定義數據服務接口 1.2.2 定義基礎數據庫服務實現 1.2.3 日志裝飾器 1.2.4 緩存裝飾器 1.2.5 主程序調用 1.3 裝飾模式的特點 一 裝飾模式案例說明 1.1 說明 本案例是&#xff1a;數據查詢增加緩存&#xff0c;使用…

【論文閱讀】YOLOv8在單目下視多車目標檢測中的應用

Application of YOLOv8 in monocular downward multiple Car Target detection????? 原文真離譜&#xff0c;文章都不全還發上來 引言 自動駕駛技術是21世紀最重要的技術發展之一&#xff0c;有望徹底改變交通安全和效率。任何自動駕駛系統的核心都依賴于通過精確物體檢…

在uni-app中如何從Options API遷移到Composition API?

uni-app 從 Options API 遷移到 Composition API 的詳細指南 一、遷移前的準備 升級環境&#xff1a; 確保 HBuilderX 版本 ≥ 3.2.0項目 uni-app 版本 ≥ 3.0.0 了解 Composition API 基礎&#xff1a; 響應式系統&#xff1a;ref、reactive生命周期鉤子&#xff1a;onMount…

408第一季 - 數據結構 - 圖

圖的概念 完全圖 無向圖的完全圖可以這么想&#xff1a;如果有4個點&#xff0c;每個點都會連向3個點&#xff0c;每個點也都會有來回的邊&#xff0c;所以除以2 有向圖就不用除以2 連通分量 不多解釋 極大連通子圖的意思就是讓你把所有連起來的都圈出來 強連通圖和強連通…

31.2linux中Regmap的API驅動icm20608實驗(編程)_csdn

regmap 框架就講解就是上一個文章&#xff0c;接下來學習編寫的 icm20608 驅動改為 regmap 框架。 icm20608 驅動我們在之前的文章就已經編寫了&#xff01; 因為之前已經對icm20608的設備樹進行了修改&#xff0c;所以大家可以看到之前的文章&#xff01;當然這里我們還是帶領…

Vue速查手冊

Vue速查手冊 CSS deep用法 使用父class進行限定&#xff0c;控制影響范圍&#xff1a; <template><el-input class"my-input" /> </template><style scoped> /* Vue 3 推薦寫法 */ .my-input :deep(.el-input__inner) {background-color…

振動力學:無阻尼多自由度系統(受迫振動)

本文從頻域分析和時域分析揭示系統的運動特性&#xff0c;并給出系統在一般形式激勵下的響應。主要討論如下問題&#xff1a;頻域分析、頻響函數矩陣、反共振、振型疊加法等。 根據文章1中的式(1.7)&#xff0c;可知無阻尼受迫振動的初值問題為&#xff1a; M u ( t ) K u …

真實案例分享,Augment Code和Cursor那個比較好用?

你有沒有遇到過這種情況&#xff1f;明明知道自己想要什么&#xff0c;寫出來的提示詞卻讓AI完全理解錯了。 讓AI翻譯一篇文章&#xff0c;結果生成的中文不倫不類&#xff0c;機器僵硬&#xff0c;詞匯不同&#xff0c;雞同鴨講。中國人看不懂&#xff0c;美國人表示聳肩。就…

zotero及其插件安裝

zotero官網&#xff1a;Zotero | Your personal research assistant zotero中文社區&#xff1a;快速開始 | Zotero 中文社區 插件下載鏡像地址&#xff1a;Zotero 插件商店 | Zotero 中文社區 翻譯&#xff1a;Translate for Zotero 接入騰訊翻譯API&#xff1a;總覽 - 控制…

【SSM】SpringMVC學習筆記8:攔截器

這篇學習筆記是Spring系列筆記的第8篇&#xff0c;該筆記是筆者在學習黑馬程序員SSM框架教程課程期間的筆記&#xff0c;供自己和他人參考。 Spring學習筆記目錄 筆記1&#xff1a;【SSM】Spring基礎&#xff1a; IoC配置學習筆記-CSDN博客 對應黑馬課程P1~P20的內容。 筆記2…

從認識AI開始-----變分自編碼器:從AE到VAE

前言 之前的文章里&#xff0c;我已經介紹了傳統的AE能夠將高維輸入壓縮成低維表示&#xff0c;并重建出來&#xff0c;但是它的隱空間結構并沒有概率意義&#xff0c;這就導致了傳統的AE無法自行生成新的數據&#xff08;比如新圖像&#xff09;。因此&#xff0c;我們希望&a…

智慧賦能:移動充電樁的能源供給革命與便捷服務升級

在城市化進程加速與新能源汽車普及的雙重推動下&#xff0c;移動充電樁正成為能源供給領域的一場革命。傳統固定充電設施受限于布局與效率&#xff0c;難以滿足用戶即時、靈活的充電需求&#xff0c;而移動充電樁通過技術創新與服務升級&#xff0c;打破了時空壁壘&#xff0c;…

發版前后的調試對照實踐:用 WebDebugX 與多工具構建上線驗證閉環

每次產品發版都是一次“高壓時刻”。版本升級帶來的不僅是新功能上線&#xff0c;更常伴隨隱藏 bug、兼容性差異與環境同步問題。 為了降低上線風險&#xff0c;我們逐步構建了一套以 WebDebugX 為核心、輔以 Charles、Postman、ADB、Sentry 的發版調試與驗證流程&#xff0c;…

如何安裝huaweicloud-sdk-core-3.1.142.jar到本地倉庫?

如何安裝huaweicloud-sdk-core-3.1.142.jar到本地倉庫&#xff1f; package com.huaweicloud.sdk.core.auth does not exist 解決方案 # 下載huaweicloud-sdk-core-3.1.142.jar wget https://repo1.maven.org/maven2/com/huaweicloud/sdk/huaweicloud-sdk-core/3.1.142/huawe…

Python學習(7) ----- Python起源

&#x1f40d;《Python 的誕生》&#xff1a;一段圣誕假期的奇妙冒險 &#x1f4cd;時間&#xff1a;1989 年圣誕節 在荷蘭阿姆斯特丹的一個寒冷冬夜&#xff0c;燈光昏黃、窗外飄著雪。一個程序員 Guido van Rossum 正窩在家里度假——沒有會議、沒有項目、沒有 bug&#xf…