C函数签名的编码约定

C函数签名的编码约定,c,coding-style,C,Coding Style,无论我使用什么语言,我总是遵循现有的编码惯例,最近我开始使用C语言。我注意到一些书籍显示的函数返回值高于函数签名的其余部分,如下所示- int foo(int bar) { ... ... ... } 我没有在我使用过的任何其他语言中看到这一点。这是现在表示C函数的标准方式,还是一些不再普遍使用的旧约定?C中的代码格式没有通用约定。流行的样式由项目(如“Linux内核”)或组织(GNU)或书籍(K&R)等命名 您可以在《1990年印度山风格手册》中看到这一点 这只是一个风格和习惯的问题。编译器

无论我使用什么语言,我总是遵循现有的编码惯例,最近我开始使用C语言。我注意到一些书籍显示的函数返回值高于函数签名的其余部分,如下所示-

int
foo(int bar)
{
...
...
...
}

我没有在我使用过的任何其他语言中看到这一点。这是现在表示C函数的标准方式,还是一些不再普遍使用的旧约定?

C中的代码格式没有通用约定。流行的样式由项目(如“Linux内核”)或组织(GNU)或书籍(K&R)等命名


您可以在《1990年印度山风格手册》中看到这一点

这只是一个风格和习惯的问题。编译器并不关心这一点。在阅读您的代码时,使用一种您感到舒适的风格,并且其他人可以很容易地遵循这种风格。

更重要的是让CTAG这样的东西有效地工作。或者,只需搜索以funcname开头的行,就可以找到函数体本身(而不是对它的任何调用)

例如:
/^funcname


只要在此之后使用任何合理的缩进样式,它将是唯一一个以这种方式出现在行首的位置(在整个代码库中)。

这只是样式问题。就我个人而言,我认为你发布的是好的风格。然而,真正的规则是永远不要把自己的风格强加给别人。你的团队/公司决定什么是标准。你应该遵循这一点,这样代码才是统一的。除此之外,间距/缩进、命名约定、括号、括号和大括号的放置可以是任意的。没有一种通用的“最佳”方式来格式化源代码。我觉得这个样式很可读,虽然我个人不使用它。FWIW我认为这个样式的原因是,您可以使用
^foo
搜索函数
foo
(与其他提及的相反)的定义。如果这听起来与您的工作流程不相关,那么不要将此规则放在您的样式指南中。书籍会做一些奇怪的事情来节省空间,也可能是因为它们与屏幕的纵横比不同。就我个人而言,我认为这种风格看起来非常难看。:-)“这是K&R风格”——错了。“现在很少使用”——如果指K&R风格,也是错误的。你的答案变化很大。@Alex Reynolds。。。如果它改进了,那应该很好。@JimBalter你是对的。删除该段。本打算立即写此评论,但不知何故没有提交。当然,今天有编程编辑器和IDE,它们实际解析代码,可以去定义符号,查找符号的所有用法,等等。因此,虽然这可能是一个历史原因,但不应该再是一个原因…不是每个人都使用IDE,特别是对于C开发。事实上,很多人不这样做。虽然我不使用它,所以不知道它是否真的有效,但快速谷歌建议,例如,现代ctags&vim(可能还有任何支持ctags的编辑器)确实有“转到定义”。程序员为工具格式化代码(而不是使用工具为程序员格式化代码)似乎也有点落后。vim-t在命令行中非常方便。而且,一旦习惯了,这种约定可以使代码更容易阅读。特别是当返回类型为verbose(struct some_type*)等时,以及使用多个参数的函数。想一想(作为一个坏例子)一些WINAPI函数,它们接受8个参数,其中7个参数通常为NULL