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

来源:互联网 发布:java 日期转换字符串 编辑:程序博客网 时间:2024/03/29 20:59
 
  

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 命令。