繁体   English   中英

缩进C代码的练习

[英]Exercise of indentation of C code

我正在尝试改进此C代码的缩进。 对于缩进使用的确切规则,我并不挑剔,我只是在乎它看起来多少有些标准!

有趣的是,该代码在我的浏览器上看起来不错,但是一旦下载,很明显缩进是由“制表符”和“空格”的混合引起的,在SublimeText2和TextWrangler上看起来都很难看。

我试过了

indent file.c

但它会返回一连串错误,这些错误似乎与存在的反斜杠有关,后跟字符串中的换行符(如果需要转义斜杠,则换行符为“ \\\\ n”或“ \\\\\\ n”)。 所以我试图用

tr "\\\n" " " < file.c > newfile.c

但是我还没有达到我的目标。

当我下载文件时,它的结尾是CRLF(DOS或Windows风格)。 当您通过Unix indent运行它时,它不喜欢反斜杠后跟CR而不是NL(又名LF)。 如果替换CRLF行尾,则应使用indent格式化。

问题是indent期望换行符后跟反斜杠,但是CR不是换行符。

如果您有dos2unixdtou命令,请使用该命令。 如果没有,请使用tr

tr -d '\015' < sfs_code.c > x31; mv x31 sfs_code.c

您还可以通过用8个空格替换选项卡来改善性能。 同样,可能还有其他工具可以完成这项工作,但经典的工具是pr

pr -e8 -l1 -t sfs_code.c > x31; mv x31 sfs_code.c

用于在多行上分割字符串的反斜杠换行符序列是1980年代风格的编码。 由于C89 / C90标准引入了字符串连接,因此没有必要(尽管仍被认为是合法的C)。

在6781行处,这是一个很大的文件。 它包括许多其他源文件(扩展名.c )和一些头。 uncrustify戳了戳,这没问题。 删除CR字符后, indent也可以。

(我使用自己的ule (统一行尾)程序进行转换。这是许多不同的可能技术之一。)

请注意, tr命令失败,因为它同时将反斜杠和换行符都映射为空白(并使CR字符保持不变),这不是您想要的。 tr命令映射单个字符; 它不适用于根据需要映射字符的组合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM