2013-10-22 102 views
10

结尾我正在通过一些专有源代码来查看:使用库的示例程序。为什么C文件以/ * [] */

该代码是用C和C++编写的,使用make for build system。

每个文件都以注释结束[]/*[]*/源文件和#[]# for makefiles。这可能是什么原因?

该代码是使用扩展名为ARM和GCC编译的。

+0

这可能是'vi'。 – Rohan

+3

我不会说这是一种编码风格,我猜测它不是标准C.以'#'开始的行往往是预处理指令,'[]#'不是标准的。你确定'#[]#'真的是每个文件的最后一行吗? –

+1

我的猜测是makefile系统在某处使用这些行。如果代码具有足够老的C代码,则它不一定依赖//注释,因此#将是添加单行非代码的一种方式,预编译器会将其过滤掉。也许这是为了构建一个依赖树,或者什么?我的预感是通过makefile查看。 –

回答

6

这很可能是某种自动扩展的占位符。

通常像macrodef(或其中一个源代码控制过滤器)会扩展这些项目以包含一些相关的文本。由于通常只有注释受保护的括号才会展开,因此注释将保持原样,从而在编译时保护源代码免受实际扩展项目的影响。

但是,您目前正在查看的可能是包含所有内部扩展的外部括号。这可能在从一个源代码控制系统到另一个源代码控制系统的代码迁移过程中完成。虽然这样的想法具有很强的推测性,但似乎并没有花费努力来迁移扩展项目,而不是将其移除。

0

在一个项目中,我的工作,每一个C源文件包含在最后一个评论:

/* End of file */ 

其原因是海湾合作委员会警告

Warning : No new line at end of file 

所以我们有这个评论(后面有一个新行),以确保人们不会在评论后写:) :)

+2

这没有任何意义!只要编辑允许,人们仍然可以在评论结尾删除新行。 – rodrigo

+0

这是一个好主意,我也想过提及它;但是,它没有解释为什么make文件具有相同的评论风格。 Make文件不会被编译,所以他们不会得到'gcc'来发出编译器警告。 –

+0

@rodrigo当然,但他们看到了评论,而且不会在'文件结束'后面写'。它确实有效。 – Archie

相关问题