首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 封裝常用組件:頭文件、預編譯指令與存儲類完全指南

     編輯:C++ 入門

四種復用方式對比

方式優點缺點
重寫代碼無依賴極其低效
複製粘貼快速版本混亂、難維護
extern 聲明跨文件共享聲明分散、易出錯
頭文件**集中聲明、編譯器自動展開、支持模板**需注意重複包含

頭文件本質

「將類、函數、宏等聲明集中,#include 時由預處理器原文展開」。**擴展名不強制為 .h**,標準庫如 <iostream> 無後綴。

預編譯指令速查

指令用途
#include包含文件,<>搜系統路徑,""先搜當前目錄
#define/#undef定義/取消宏
#if/#ifdef/#ifndef條件編譯
#elif/#else/#endif多分支/結束
#error強制報錯停止編譯
#pragma編譯器特定指令(如 #pragma once 防重複包含)

防重複包含標準模式

// mylib.h
#ifndef MYLIB_H
#define MYLIB_H

// 聲明/定義...

#endif // MYLIB_H

或現代編譯器支持 #pragma once(更簡潔)。

存儲類說明符

關鍵字含義典型場景
extern僅聲明,不定義(不分配內存)跨文件共享全局變量/函數
static靜態存儲期;文件作用域時限制鏈接內部單例、模塊私有變量
register建議存寄存器(現代編譯器自動優化,基本忽略)極熱變量
auto自動存儲期(塊作用域默認),C++11 後改為類型推導局部變量

模板與頭文件

模板定義**必須**放在頭文件(或 .inl 包含),否則鏈接期找不到實例化代碼。這是「頭文件只放聲明」規則的例外。

實戰模板:可復用算法組件

// algorithms.h
#pragma once
#include 
#include 

namespace mylib {
    template
    void quick_sort(std::vector& v) {
        std::sort(v.begin(), v.end()); // 示例
    }
}
// main.cpp
#include "algorithms.h"
int main() {
    std::vector v = {3,1,4,1,5};
    mylib::quick_sort(v);
}

總結

頭文件 + 預編譯條件編譯 + 合理存儲類 = **穩定、靈活、高效** 的 C++ 組件封裝基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved