.cpp 獨立編譯為目標文件(.obj/.o),互不干擾;extern 變量/函數);main,作為執行起點;static 修飾全局實體 → **內部鏈接**,僅本文件可見;extern 聲明(函數可省略)。IDE/構建系統會依賴圖自動編譯所有 .cpp,再統一鏈接生成 .exe。你**不需要**手動指定編譯順序,只需確保專案包含所有源文件。
static);extern 聲明)或手寫 extern 聲明;不一定是全局。加 static 的全局函數/變量僅文件內可見;不加 static 則為外部鏈接,需配合 extern 跨文件使用。
// foo.h
#ifndef FOO_H
#define FOO_H
extern int globalVar; // 跨文件變量聲明
void fooFunc(); // 函數聲明(隱式 extern)
#endif
// foo.cpp
#include "foo.h"
int globalVar = 42; // 定義
void fooFunc() { ... } // 定義
// main.cpp
#include "foo.h"
int main() { fooFunc(); }
.cpp,防止重複定義錯誤;namespace { ... } 替代 static 限制作用域(C++11+ 推薦);-Wall -Wextra,捕獲隱式聲明等問題。