# indent - 格式化C语言的源文件

indent命令 可辨识C的原始代码文件,并加以格式化,以方便程序员阅读、修改等操作。

# 适用范围

RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux

# 语法

indent  [选项]  [源文件] 
indent  [选项]  [源文件] [-o 目标文件]

# 选项

-bad:                   # 在声明区加上空白行;
-bap:                   # 添加空白行;
-bbb:                   # 在注释后面添加空白行;
-bc:                    # 在声明段中,如果出现逗号就换行;
-bl:                    # if(或是else、for等)与后面执行区段的“{”不同行,且“}”
                         # 自成一行-bli<缩排格数>设置{}缩排的格数;
-br:                    # if(或是else、for等)与后面执行区段的“{”同行,且“}”自成一行;
-bs:                    #  在sizeof之后空一格;
-c<栏数>#  将注释置于程序右侧指定的栏位;
-cd<栏数>#  将注释置于声明右侧指定的栏位;
-cdb:                   #  注释符号自成一行;
-ce:                    # 将else置于“}”(if执行区段的结尾)之后;
-ci:<缩排格数>#  叙述过长而换行时,指定换行后缩排的格数;
-cli<缩排格数>#   使用case时,switch缩排的格数;
-cp<栏数># 将注释置于else与elseif叙述右侧指定的栏位;
-cs:                    # 在case之后空一格;
-d<缩排格数>#  针对不是放在程序码右侧的注释,设置其缩排格数;
-di<栏数># 将声明区段的变量置于指定的栏位;
-fc1:                   # 针对放在每行最前端的注释,设置其格式;
-fca:                   # 设置所有注释的格式;
-gnu:                   # 使用指定的GNU格式,该参数为默认值;
-i<格数>#  设置缩排的格数;
-ip<格数>#  设置参数的缩排格数;
-kr:                    #  指定使用Kernighan&Ritchie的格式;
-lp:                    #  叙述过长而换行,且叙述中包含了括号时,
                         #  将括号中的每行起始栏位内容垂直对其排列;
-nbad:                  #  在声明区段后不要加上空白行;
-nbap:                  #  在程序后面不添加空白行;
-nbbb:                  #  在注释段后面不添加空白行;
-nbc:                   #  在声明段中,即使出现逗号,也不换行;
-ncdb:                  #  注释符号不自成一行;
-nce:                   #  不将else置于“}”后面;
-ncs:                   #  不在case后面空一格;
-nfc1:                  #  不要格式化放在每行最前端的注释;
-nfca:                  #  不用格式化任何的注释;
-nip:                   #  参数不要缩排;
-nlp:                   #  叙述过长而换行,且叙述中包含了括号时,
                         #  不用将括号中的每行起始栏位垂直对其排列;
-npcs:                  #  在调用函数名之后,不要添加空格;
-npro:                  #  不要读取indent的配置文件“.indent.pro”;
-npsl:                  #  程序类型与程序名称放在同一行;
-nsc:                   #  注释左侧不要添加星号;
-nsob:                  #  不用处理多余的空白行;
-nss:                   #  若for或while区段仅有一行时,在分号前不加空格;
-nv:                    #  不显示详细的信息;
-orig:                  #  使用berkeley格式;
-pcs:                   #  在调用函数名与“{”之间添加空格;
-psl:                   #  程序类型置于程序名称的前一行;
-sc:                    #  在每行注释左侧添加星号;
-sob:                   #  删除多余的空白行;
-ss:                    #  若for或swile区段仅有一行时,在分号前加上空格;
-st:                    #  将结果显示在标准输出设备上;
-T:                     #  数据类型名称缩排;
-ts<格数>#  设置tab的长度; 

--help                           # 显示帮助文档
--version                        # 显示命令版本信息

# 举例

使用indent命令将C语言源文件"test.c"中所有的sizeof后面添加一个空格,输入如下命令:

[sogrey@bogon newDir]$ > test.c
[sogrey@bogon newDir]$ cat test.c
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main()
{
  short int sa=10;
  int a=10;
  long la=10;
  float f = 20;
  double d=20;
  char ch='c';
  char str[]="ABC";
  char *p=str;
  struct str{
  double d;
  char ch;
  int data;
 }str_wu;
 struct str1{
  char ch;
  double d;
  int data;
 }str_wu1;
    printf("sizeof(short):%d\n",sizeof(sa));
    printf("sizeof(int):%d\n",sizeof(a));
    printf("sizeof(long):%d\n",sizeof(la));
    printf("sizeof(float):%d\n",sizeof(f));
    printf("sizeof(double):%d\n",sizeof(d));
    printf("sizeof(char):%d\n",sizeof(ch));
    printf("sizeof(string):%d\n",sizeof(str));
    printf("sizeof(point address):%d\n",sizeof(p));
    printf("sizeof(Point):%d\n",sizeof(*p));
    printf("sizeof(Struct):%d\n",sizeof(str_wu));
    printf("sizeof(Struct):%d\n",sizeof(str_wu1));
    system("pause");
}
[sogrey@bogon newDir]$ indent -bs test.c
[sogrey@bogon newDir]$ cat test.c
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int
main ()
{
  short int sa = 10;
  int a = 10;
  long la = 10;
  float f = 20;
  double d = 20;
  char ch = 'c';
  char str[] = "ABC";
  char *p = str;
  struct str
  {
    double d;
    char ch;
    int data;
  } str_wu;
  struct str1
  {
    char ch;
    double d;
    int data;
  } str_wu1;
  printf ("sizeof(short):%d\n", sizeof (sa)); 
  printf ("sizeof(int):%d\n", sizeof (a));
  printf ("sizeof(long):%d\n", sizeof (la));
  printf ("sizeof(float):%d\n", sizeof (f));
  printf ("sizeof(double):%d\n", sizeof (d));
  printf ("sizeof(char):%d\n", sizeof (ch));
  printf ("sizeof(string):%d\n", sizeof (str));
  printf ("sizeof(point address):%d\n", sizeof (p));
  printf ("sizeof(Point):%d\n", sizeof (*p));
  printf ("sizeof(Struct):%d\n", sizeof (str_wu));
  printf ("sizeof(Struct):%d\n", sizeof (str_wu1));
  system ("pause");
}
[sogrey@bogon newDir]$ 

执行上面的命令后,用户可以打开指定的源文件查看在sizeof后面是否都添加了一个空格。由于该命令的参数非常多,所以用户可以根据实际需要选择适合的参数进行使用即可。