AIX下C/C++源程序自動排版

 
   

1
cb 命令

用途
將 C 源代碼轉換成一種易於讀取的格式。

語法
cb [ -s ] [ -l Length | -j ] [ File ... ]

描述
cb 命令從標準輸入或指定的文件讀取 C 程序並將它們寫至標準輸出,該標準輸出的形式(通過縮進和空格)可顯示代碼的結構。不使用標誌調用 cb 命令時,它不會對行進行分割或連接。注意預處理器語句中的標點符號可能引起縮進錯誤。

要獲得最佳結果,請在語法正確的源代碼上使用此命令。

標誌

-j 連接已分割的行。如果 -l 標誌已經給出,則忽略此標誌。
-l Length 分割比 Length 字符長的行。
-s 根據 The C Programming Language(Englewood Cliffs, New Jersey: Prentice-Hall, Inc., 1978)中 Kernighan 和 Ritchie 的樣式對源代碼進行格式化。

示例
要創建易於讀取的被稱作 pgm.pretty.c 的 pgm.c 的一個版本,輸入:


cb pgm.c > pgm.pretty.c文件

/usr/ccs/bin/cb 包含 cb 命令。
/usr/bin/cb 連接到 cb 命令的符號鏈路。

2
indent 命令

用途
重新格式化一個 C 語言程序。

語法
indent InputFile [ OutputFile ] [ -nbad | -bad ] [ -nbap | -bap ] [ -nbbb | -bbb ] [ -nbc | -bc ] [ -br | -bl] [ -cn] [ -cdn ] [ -ncdb | -cdb ] [ -nce | -ce ] [ -cin ] [ -clin ] [ -dn ] [ -din ] [ -ndj | -dj ] [ -nei| -ei ] [ -fa ] [ -nfa ] [ -nfc1 | -fc1 ] [ -in ] [ -nip | -ip ] [ -ln ] [ -lcn ] [ -nlp | -lp ] [ -npro] [ -npcs | -pcs ] [ -nps | -ps ] [ -npsl| -psl ] [ -nsc | -sc ] [ -nsob | -sob ] [ -nslb | -slb ] [ -st ] [ -troff ] [ -nv | -v ] [ -TType ] ...

描述
indent 命令按照隨命令輸入的標誌所指定的格式重新格式化一個 C 程序。

如果只指定 InputFile 參數,重格式化的文件寫回 InputFile 參數並且一個 InputFile 的備份副本被寫回當前目錄,文件名帶 .BAK 後綴。

如果指定 OutputFile 參數,indent 命令執行檢查以確認它的名字與 InputFile參數是不同的。

要爲 indent 命令設置自己的缺省概要文件,在您登錄目錄或當前目錄中創建一個名爲 .indent.pro 文件。在這個文件中,包含想包含的標誌,這些標誌用空格、製表符或換行符隔開。

當前目錄下 .indent.pro 文件中的標誌覆蓋那些在您的登錄目錄下的標誌( 除了 -T Type 標誌,它是累積的)。如果 indent 命令運行並且一個概要文件存在,概要文件被讀入以設置程序的缺省配置。然而,命令行上的標誌覆蓋概要文件標誌。

註釋處理
indent 命令假定緊跟在起始註釋標記 (/*- 或 /**)後帶 -(破折號)或 * 的任何註釋是用星號圍着的註釋。每行註釋保持不變,除了其縮進。在註釋的第一行,可以調整該縮進來說明這個變化。

其它註釋被視爲文本。indent 命令在一行中匹放入儘量多的單詞(由空格、製表符或換行符隔開)。每段由幾個空行隔開。

塊註釋不在代碼的右邊且超過一行。

如果註釋在一帶有代碼的行中,註釋從由 -cn 標誌設置的註釋列開始。否則,註釋以 n 縮進級別開始,這個縮進級別小於代碼當前的位置,其中的 n 由 -d n 標誌指定。如果一行中的代碼超過了註釋列,註釋從更靠右邊的地方開始。在極端情況下,右頁邊距能被自動地擴展。

預處理器行處理
按常規,indent 命令單獨給預處理器留幾行。它僅做的重格式化是整理後面的註釋。它只留下嵌入式註釋。條件編譯(在 #ifdef 和 #endif 間的代碼行)被識別並且 indent 命令試圖爲引入的語法特性做正確地補償。

C 語法處理
內建於 indent 命令中的解析器試圖處理不完整和格式錯誤的語法。特別地,宏的使用象:


#define forever for(;)被正確地處理。爲了最好的結果,在句法正確的源文件上用 indent 命令。

標誌

注: 標誌可以在文件名前或後出現。
-bad 在每個聲明塊後,強制加一個空行。
-nbad 在每個聲明塊後禁止一個空行;激活該項,除非用 -bad 標誌關閉。
-bap 在每個過程體後強制加一個空行。
-nbap 禁止在每個過程體後的空行;激活該項,除非用 -bap 標誌關閉。
-bbb 在每個註釋塊後強制加一個空行。
-nbbb 在每個塊註釋前禁止一個空行;激活該項,除非用 -bbb 標誌關閉。
-bc 一個聲明中在每個逗號後強制加換行。
-nbc 在聲明中的每個逗號後禁止換行;激活該項,除非用 -bc 標誌關閉。
-bl 格式化複合語句、結構初始化、枚舉初始化,如下:

if (...)
{
code}}
-br 格式化複合語句、結構初始化、枚舉初始化,如下:

if (...) {
   code }}除非用 -bl 標誌關閉,否則該標誌是活動的。

-cn 在代碼上將註釋的初始製表符位置設爲 n 變量。缺省值是 33。
-cdn 在聲明上將註釋的初始製表位置設爲 n 變量。缺省情況下,這個標誌用 -c 標誌定義的值。
-cdb 在空行中啓用放置註釋定界符;激活該項,除非用 -ncdb 標誌關閉。-cdb 標誌僅僅影響塊註釋,不影響到代碼右邊的註釋。生成的註釋看似如下形式:

/*
* this is a comment
*/
-ncdb 在空行中禁用放置註釋定界符。-ncdb 標誌僅僅影響塊註釋,不影響到代碼右邊的註釋。生成的註釋看似如下形式:

/* this is a comment */
-ce 啓用強制 else 語句來緊跟前面的 }(左括號);激活該項,除非用 -nce 標誌關閉。
-nce 禁用強制 else 語句來緊跟前面的 } (左括號)。
-cin 從語句的第一行開始處縮進連續行 n 位置。圓括號中的表達式中有額外的縮進以表明嵌套,除非 -lp 標誌有效。在缺省情況下,這個標誌用 -i 標誌定義的值。
-clin 把條件標籤向包含標誌的語句右側縮進 n 個位置。輸入 -cli0.5 使條件標籤縮進跳格的一半。這個選項是唯一接受小數參數的選項。在缺省情況下,值是 -cli0。
-dn 用 n 變量控制不在代碼右邊的註釋的放置。指定 -d1 標誌使這種註釋看起來向代碼左邊縮進一級。缺省情況下,這個標誌用 -d0 同時註釋和代碼對齊。相對於程序代碼的註釋行的位置影響註釋縮進。
-din 用 n 變量,指定來自先前聲明的關鍵字中的標識的縮進位置數。缺省情況下,這個標誌用 -di16。
-dj 左調整聲明。
-ndj 縮進聲明;激活該項,除非用 -dj 標誌關閉。
-ei 啓用特別 else-if 處理;激活該項,除非用 -nei 標誌關閉。 -ei 標誌引起跟着 else 語句的 if 語句和前面的 if 語句有相同的縮進。
-nei 禁用特別 else-if 處理。
-fa 把分配運算符從舊式 C 代碼翻轉到 ANSI 格式。該標誌保持活動除非 -nfa 標誌被關閉。

注意:更改代碼意義的可能性是存在的,如果代碼有意用於 ANSI 編譯器。例如,A=-B 變成 A-=B。

注: 在運算符間不使用空格。如果用戶的意思是減,那麼翻轉是必須的;另一方面,如果用戶的意思是 A 等於負 B ,翻轉則改變含義。
-nfa 禁止翻轉運算符。如果代碼是爲 ANSI 編譯器寫的,用這個標誌。
-fc1 可以格式化在列 1 中開始的註釋;激活該項,除非用 -nfc1 標誌被關閉。
-nfc1 不能格式化在列 1 中開始的註釋。
-in 設置縮進級別大小。缺省情況下,級別大小是位置 8。
-ip 啓用縮進參數聲明;激活該項,除非 -nip 標誌被關閉。
-nip 禁用縮進參數聲明。
-ln 設置代碼右端註釋的最大列的位置。如果註釋不夠一行,則最多打印 25 個字符。
-lcn 把註釋塊最大行長度設爲 n 變量。缺省情況下,這個標誌用由 -l 標誌指定的長度。
-lp 在連續行中對齊由括號包圍的代碼;激活該項,除非用 -nlp 標誌關閉。如果在一行中有左括號而無右括號相匹配,續行在隨着左括號的位置處開始。
在 -lp 標誌有效時,這些行顯示如下:


p1 = first_procedure(second_procedure(p2,p3),
third_procedure(p4,p5));插入兩行或更多換行產生以下結果:


p1 = first_procedure(second_procedure(p2,
p3),
third_procedure(p4,
p5));
-nlp 使有括號包圍的代碼在連續行中不對齊。在 -nlp 標誌有效時,這些行顯示如下:

p1 = first_procedure(second_procedure(p2,p3),
third_procedure(p4, p5));
-npro 使概要文件 ./.indent.pro 和 $HOME/.indent.pro 被忽略。
-pcs 在每個過程調用名稱和後面的 ((左括號)間插入一個空格。
-npcs 禁止在每個過程調用名稱和跟着的 ((左括號)間的空格;激活該項,除非用 -pcs 標誌關閉。
-ps 在跟着 -> 運算符的指針的兩邊插入空格。
-nps 禁止在跟着 -> 運算符的指針的兩邊插入空格;激活該項,除非用 -ps 標誌關閉。
-psl 左對齊被定義過程名;激活該項,除非用 -npsl 標誌關閉。如果有過程類型,保留在前面的行裏。
-npsl 禁用定義過程名左對齊。
-sc 使 *(星號)放置在註釋的左邊;激活該項,除非用 -nsc 標誌關閉。
-nsc 禁止將 *(星號)放置在註釋的左邊。
-slb 把任何不在代碼右邊的單行註釋視爲一個註釋塊。
-nslb 禁用把任何不在代碼右邊的單行註釋視爲一個註釋塊 ;激活該項,除非用 -slb 標誌關閉。
-sob 刪除可選的空行。和以下任何標誌的合作工作:-nbad、-nbap、或 -nbbb。僅刪除那些用 -bad、-bap 或 -bbb 標誌插入的空白行。
-nsob 保留可選的空白行;激活該項,除非用 -sob 標誌關閉。
-st 使 indent 命令從標準輸入和獲得輸入並輸出到標準輸出。
-TType 添加 Type 變量到關鍵字類型列表。名稱可累積以便 -T 能被指定多次。應當指定在程序中出現的由 typedef 語句定義的所有類型來從 indent 命令產生最好的輸出。
-troff 爲了 troff 處理,格式化 C 程序。 產生一個與由 vgrind 命令產生的列表相似的列表。如果沒有輸出文件被指定,缺省是標準輸出,而不是在適當的位置上格式化。
-v 打開冗長模式,這種模式報告什麼時候一行輸入被分成兩行或多行輸出,並在完成後給出大小統計。
-nv 關閉冗長模式;激活該項,除非用 -v 標誌關閉。

示例
要用缺省設置的 indent 命令格式化 test.c 文件並將輸出放入 newtest.c 文件,請輸入:

indent test.c newtest.c要格式化 test.c 文件以便在每個聲明塊和過程體後強制加入空白行,用所有其他缺省設置,並存貯輸出到 newtest.c 文件,請輸入:

indent test.c newtest.c -bad -bap要用缺省設置的 indent 命令格式化 test.c 文件並定義 uint 作爲一個可被 indent 命令識別的類型關鍵字,請輸入:

indent test.c newtest.c -Tuint文件

./.indent.pro 包含概要文件。
$HOME/.indent.pro 包含概要文件。
/usr/ccs/bin/indent 包含 indent 命令。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章