我最近一直在查看Illumos源代码并注意到一些奇怪的事情。
在源代码中,函数类型的编写如下:
static int
outdec64(unsigned char *out,
unsigned char *chr, int num)
{
... Code ...
}
这绝对不是我学习它的方式。它有什么具体含义吗?
答案 0 :(得分:10)
不,白色空间通常在C中被忽略。这只是编码风格。
这是SunOS的编码风格:
每个函数前面都应该有一个块注释序言,它提供了该函数的名称和简短描述。 返回值的类型应该在第1列的一行(int应该明确指定)。
这符合另一条规则:
所有终端都不能很好地处理超过80列的行,如果可能,应该避免使用
答案 1 :(得分:0)
这是所有编码风格,因而是主观的。在编码风格方面最重要的是你选择一个并坚持下去。
这里有一些关于编码风格的建议,这最终是个人意见,尽管在这个答案中我的个人"意见恰好是我认为在我读过的所有C代码中最常见的:
存储类说明符和返回类型
最常见的样式是将存储类说明符(和函数说明符,如inline
)和返回类型放在与函数名称相同的行中:
static int outdec64
这是事实上的编码风格,是迄今为止最常见的编码风格。它还使函数声明样式与变量decaration样式一致。因此,我强烈建议使用那种风格。
一种不常见的替代方法是拆分存储说明符并将其放在一行:
static
int outdec64
虽然不太常见,但这种风格至少有一个合理的理由:保持存储说明符分开。
有些人喜欢将返回类型放在自己的行上,就像在您的示例中一样。但是他们通常没有考虑过他们的编码风格,因为当你混合使用存储类说明符时,代码变得很奇怪。存储说明符static
不是指返回类型,而是指整个函数。那么为什么要把它与返回类型一起写呢?根据我的经验,使用该风格的人通常会忘记关键字static
,extern
和inline
的含义,当写在函数前面时。
功能参数
存在两种事实上的标准样式:单行上的所有参数
outdec64 (unsigned char *out, unsigned char *chr, int num)
或每个参数在它们自己的行上,每个参数都缩进
outdec64 (unsigned char *out,
unsigned char *chr,
int num)
这两种风格通常是混合的,因此具有少量参数的函数将它们放在一行上,而具有大量参数的函数将它们放在不同的行上。
除了这两种风格之外的任何其他风格都很少见,因此值得怀疑。
正如你所看到的,你的例子都没有遵循这些事实上的标准,所以至少我认为它是晦涩难懂的风格。