从.c/.h源文件中去除尾随空格是否100%安全?

我想从 .c 和 .h 文件中自动删除所有尾随空格,以减少导致 git 历史记录中合并冲突的垃圾等。

有什么可以想象的方法可以改变编译阶段的输出吗?或者自动执行此操作是否完全安全?

回答

我能想到的唯一一种可能会改变含义的情况是,如果有一个以反斜杠后跟空格结尾的宏:

#define FOO bar<space> 

其中<space>代表一个空格字符。在修剪之前,反斜杠会转义空格,我认为这没有任何影响。但是当您删除空格时,它会转义换行符,因此下一行将成为扩展的一部分。

由于没有理由像这样写一个转义空间,这似乎是一个不太可能的问题。其实如果有这样的代码,我觉得更有可能是他们打算写多行扩展,不小心加了空格。

在宏和字符串文字之外,所有空格序列都被视为单个空格,空格和换行符之间没有区别。

更新:

这个案子实际上是无效的。C 不允许字符串或字符文字之外的转义序列,并且只能使用反斜杠转义换行符。GCC 有一个扩展来将其视为转义的换行符(以防程序员犯了我上面描述的错误),并且在执行此操作时会打印警告。因此,删除空格会产生相同的结果,但会消除警告。


以上是从.c/.h源文件中去除尾随空格是否100%安全?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>