關鍵字:編譯器保留的專用標記
關鍵字在 Turbo C 2.0 (ANSI C 89 擴展) 中共 43 個,分為 ANSI 標準 (32) 與 Borland 擴展 (11) 兩類。它們不可作為變數、函數、標號等識別符名稱。
ANSI C 標準關鍵字 (32)
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Turbo C 2.0 擴展關鍵字 (11) —— 針對 8086 分段架構
asm _cs _ds _es _ss cdecl
far near huge interrupt pascal
far/near/huge:指標記憶體模型修飾詞
interrupt:中斷服務常式 (ISR) 宣告
pascal/cdecl:呼叫慣例控制
_cs/_ds/_es/_ss:段暫存器偽變數
識別符命名規則:Turbo C 2.0 規範
| 規則 | 說明 |
| 首字元 | 英文字母 (A-Z, a-z) 或底線 _ |
| 後續字元 | 字母、底線、數字 (0-9) |
| 大小寫敏感 | Count、count、COUNT 為三個不同識別符 |
| 有效長度 | 前 32 字元 唯一識別 (超過部分被忽略) |
| 不可使用 | 關鍵字 (含擴展) |
合法 vs 非法範例
| 合法 ✓ | 非法 ✗ | 原因 |
smart | 5smart | 首字元為數字 |
_decision | bomb? | 含特殊字元 ? |
key_board | key.board | 含點號 . |
FLOAT | float | 關鍵字 (大小寫不同視為合法) |
實務命名慣例 (現代 C 專案通用)
- 變數/函數:
snake_case (如 max_retry_count)
- 常數/巨集:
UPPER_SNAKE_CASE (如 MAX_BUFFER_SIZE)
- 型別/結構:
PascalCase 或 _t 後綴 (如 ListNode_t)
- 私有/內部:前綴
_ 或 __ (保留給實作,用戶代碼避免使用)
- 避免:單字元名稱 (除迴圈索引)、過度縮寫、中英混雜。
編譯器擴展關鍵字的現代對應
| Turbo C 2.0 | 現代 GCC/Clang/MSVC | 備註 |
far/near/huge | 平坦記憶體模型,不再需要 | 64-bit 系統預設 64-bit 指標 |
interrupt | __attribute__((interrupt)) / __interrupt | 平台相關 |
pascal | __stdcall (Windows) / __attribute__((stdcall)) | 呼叫慣例 |
cdecl | 預設呼叫慣例 | C 宣告慣例 |
asm | __asm__ / __asm | 內聯組語語法不同 |
掌握關鍵字與識別符規則,是撰寫可移植、無警告、符合規範 C 代碼的基石。現代專案建議啟用 -std=c11 -pedantic -Wall -Wextra,讓編譯器自動攔截非標準用法。