longshortintunsigned 類型<stdint.h> 固定寬度類型(int32_t 等)⚠️ 混用有號/無號需極謹慎,隱式轉換易導致邏輯錯誤。
long long 保證 ≥ 64 位long 為 64 位(LP64 模型:Linux/macOS 64位)long 32 位,long long 64 位int64_t/uint64_t 確保可移植性.c 檔定義(配置儲存空間、初始化).h 檔用 extern 聲明.c 包含該 .h.h,讓編譯器檢查一致性// globals.h
extern int global_counter;
extern void init_system(void);
// globals.c
#include "globals.h"
int global_counter = 0;
void init_system(void) { ... }
// main.c
#include "globals.h"
int main() { init_system(); ... }
extern 在函數聲明中的意義語法提示:定義可能在其他編譯單元。extern int f(); 與 int f(); 無實質差異,函數預設即為外部連結。
auto 關鍵字用途已廢棄,無實際用途。C++11 賦予新意義(型別推導),C 語言無此特性。
// 錯誤:typedef 尚未完成即使用
typedef struct { char *item; NODEPTR next; } *NODEPTR;
// 正確:先給結構體標籤
struct Node { char *item; struct Node *next; };
typedef struct Node *NodePtr;
char *(*(*a[N])())() → a 是陣列,元素為指標,指向函數,回傳指標,指向函數,回傳 char*隱式宣告為 int f(),後續實際定義若不符合 → 編譯錯誤「非法重定義」。所有函數必須先聲明再使用。
main() 正確定義