linux c格式化工具,一、Linux下C代码格式化工具indent

本文介绍了如何使用indent工具对C代码进行格式化,以符合Linux内核的编程风格。通过安装indent,执行Lindent脚本,可以轻松地调整代码格式。此外,文章还提及了indent的备份机制以及如何配置备份文件后缀。indent提供了多种代码风格选择,如GNU、Kernighan&Ritchie和Berkeley风格,并详细解释了如何处理空行和注释的格式设定。
摘要由CSDN通过智能技术生成

引言

每个人的编程风格不尽相同,Linux作为开源项目,为了保证源码的可阅读性,就需要遵循Linux要求的“规则”,在内核源码的Documentation/CodingStyle中详细地记录了Linux的编程风格。大家感兴趣的话,可以去looklook。本文重点在于:GNU提供的格式化工具——indent。indent可用于从一种C代码的风格转换为另一种风格。

使用方法

执行以下命令,安装软件indent,执行Linux内核源码提供的脚本Lindent,便可以对我们的驱动代码进行格式化。

sudo apt install indent

./内核所在目录/scripts/Lindent my_module.c

贴一下脚本Lindent的代码:

#!/bin/sh

PARAM="-npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1"

RES=`indent --version`

V1=`echo $RES | cut -d' ' -f3 | cut -d'.' -f1`

V2=`echo $RES | cut -d' ' -f3 | cut -d'.' -f2`

V3=`echo $RES | cut -d' ' -f3 | cut -d'.' -f3`

if [ $V1 -gt 2 ]; then

PARAM="$PARAM -il0"

elif [ $V1 -eq 2 ]; then

if [ $V2 -gt 2 ]; then

PARAM="$PARAM -il0";

elif [ $V2 -eq 2 ]; then

if [ $V3 -ge 10 ]; then

PARAM="$PARAM -il0"

fi

fi

fi

indent $PARAM "$@"

以上就是如何使用indent对我们的驱动代码进行格式化,标准化的一个流程,相当之简单,到这里就结束。后续的内容都是介绍indent工具的详细用法。

命令语法

indent [options] [input-files]

indent [options] [single-input-file] [-o output-file]

备份文件

indent会自动为我们的输入文件进行备份,默认的备份文件名是在原文件名的基础上加上“”,例如,文件名为“main.c”,对应的备份文件名为“main.c”。

我们可以通过设置环境变量SIMPLE_BACKUP_SUFFIX,来设置备份文件的后缀,例如,

export SIMPLE_BACKUP_SUFFIX=".bak"

这样的话,文件名为“main.c"的文件就变为“main.c.bak"。

常见的代码风格

默认风格GUN

-nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2

-ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -nprs -psl -saf -sai

-saw -nsc -nsob

Kernighan&Ritchie风格

-nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0

-cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs

-nprs -npsl -saf -sai -saw -nsc -nsob -nss

original Berkeley风格

-nbad -nbap -bbo -bc -br -brs -c33 -cd33 -cdb -ce -ci4 -cli0

-cp33 -di16 -fc1 -fca -hnl -i4 -ip4 -l75 -lp -npcs -nprs -psl

-saf -sai -saw -sc -nsob -nss -ts8

Linux风格

-nbad -bap -nbc -bbo -hnl -br -brs -c33 -cd33 -ncdb -ce -ci4

-cli0 -d0 -di1 -nfc1 -i8 -ip0 -l80 -lp -npcs -nprs -npsl -sai

-saf -saw -ncs -nsc -sob -nfca -cp33 -ss -ts8 -il1

空行(blank Line)

indent对空行的处理有以下几个选项:

-bad: 在变量定义以及注释之前加入空行

char *foo;

float *bar;

//int type

int baz;

经过indent格式化后,就变成了

char *foo;

float *bar;

//int type

int baz;

-nbad:与选项bad相反,在两者之间不加入空行

-bap:在程序主体之间加入空行,例如:

void func (void)

{

}

int main (void)

{

return 0;

}

上述代码中,main函数与func函数之间没有空行,使用bap选项进行格式化之后,变成:

void

func (void)

{

}

int

main (void)

{

return 0;

}

-nbap:与bap相反,在两者之间不加入空行;

-bbb:注释前加入空行;

-nbbb:与选项bbb相反;

-sob:删除多余的空行,不包括indent格式化输出的空行;

注释

关于注释部分,C代码是以/* */进行代码的注释,indent会保留以下格式的注释,也就是不会被进行格式化

/**********************

* Comment in a box!! *

**********************/

/*

* A different kind of scent,

* for a different kind of comment.

*/

Comments which are not boxed comments may be formatted, which means that the line is broken to fit within a right margin and left-filled with whitespace.

提供以下选项:

fc1:针对放在每行最前端的注释,设置其格式。(PS:这里最后一个字符是阿拉伯数字1)

-fca:设置所有注释的格式。

-dn:针对不是放在程序码右侧的注释,设置其缩排格数。

//comment

若执行indent -d2,则会变成:(上面的代码前有两个空格,被删除了)

//comment

cn:将注释置于程序码右侧指定的第n栏。

-cdb:注释符号自成一行,通常结合下面的sc一起使用

-sc:将"*"放在多行注释的开头。例如:

/* Loving hug */

执行indent -cdb -sc,则会变成

/*

* Loving hug

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值