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

C語言編碼風格指南:縮進、空白、大括號與模組化原則(Linux Kernel 風格核心節錄)

     編輯:關於C語言

為什麼需要統一風格?

C 語法允許任意空白,但可讀性、可維護性、團隊協作高度依賴一致風格。Linux Kernel、Google、GNU 各有風格指南,核心原則相通。

空白字元規範

場景規範範例
關鍵字與括號間隔一空格if (cond)、while (1)
雙目運算子兩側各一空格a = b + c、x == y
單目運算子緊貼運算元++i、!flag、&var
後綴運算子緊貼運算元arr[i]、func(arg)、ptr->member
逗號、分號後加一空格for (i=0; i<n; i++)、func(a, b)
長行折行80 欄內,續行對齊運算子置行首、參數對齊

大括號風格:K&R vs Allman

/* K&R 風格(Linux Kernel、本指南推薦) */
if (cond) {
    do_something();
} else if (other) {
    do_other();
}

/* Allman 風格(Visual Studio 預設、部分企業) */
if (cond)
{
    do_something();
}
else
{
    do_other();
}

K&R 省螢幕行數,Allman 視覺對齊清晰。專案內統一即可,切勿混用。

函數定義大括號

int foo(int a, int b)
{           // 左大括號獨佔一行
    ...
}

與控制陳述式不同,函數定義左大括號獨立一行,便於 grep ^func_name 定位。

switch-case 縮進

switch (c) {
case 'A':
    do_a();
    break;
case 'B':
    do_b();
    break;
default:
    do_default();
}

case 標籤與 switch 同層,內部陳述式再縮進。

空行分隔邏輯區塊

  • 函數定義之間
  • 標頭檔、全域變數、函數定義之間
  • 函數內:變數宣告區、邏輯區塊、return 前

變數宣告對齊(可選)

int         a, b;
double      c;
char *      str;

以 Tab 對齊類型與變數名,提升掃視效率。

命名慣例速查

類別慣例範例
巨集/常數全大寫底線MAX_SIZE
函數/變數小寫底線get_user_name
結構/型別PascalCase 或 _t 結尾Node、file_t
靜態/內部前綴 _ 或 模組名__internal_helper

工具自動化

  • clang-format:LLVM/Google/Kernel 風格一鍵格式化
  • uncrustify:高度可配置
  • 編輯器整合:VS Code、Vim、Emacs 皆可存檔自動格式化

「風格無絕對優劣,一致性才是王道。」

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