【问题标题】:C coding conventions for function signatures函数签名的 C 编码约定
【发布时间】:2013-04-01 07:49:00
【问题描述】:

我总是遵循我使用的任何语言的现有编码约定,并且我最近开始使用 C。我注意到有些书显示的函数的返回值高于函数签名的其余部分,就像这样 -

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

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

【问题讨论】:

  • 这只是风格问题。我个人认为你发布的风格很好。然而,真正的规则是永远不要将自己的风格强加于他人。
  • 您的团队/公司决定什么是标准。您应该遵循这一点,以便代码是统一的。除此之外,间距/缩进、命名约定、括号、括号和大括号的位置可以是任意的。
  • 没有一种普遍接受的“最佳”方式来格式化源代码。我觉得这种风格可读性很强,虽然我个人不使用它。
  • FWIW 我认为这种风格的原因是您可以使用^foo 搜索函数foo(与其他提及相反)的定义。如果这听起来与您的工作流程无关,请不要将此规则放在您的风格指南中。
  • 书籍为了节省空间做了一些奇怪的事情,也可能是因为它们与屏幕的纵横比不同。就个人而言,我认为这种风格看起来非常难看。 :-)

标签: c coding-style


【解决方案1】:

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

Wikipedia has a list of styles.

【讨论】:

  • "那是 K&R 风格" -- 错误。 “它今天很少使用”——如果提到 K&R 风格也是错误的。
  • 你的答案变化很大。
  • @AlexReynolds ...如果改进应该很好。
  • @JimBalter 你是对的。删除了该段。打算立即写此评论,但不知何故没有提交。
【解决方案2】:

更多的是让 ctags 之类的东西有效地工作。或者,能够通过简单地搜索以 funcname 开头的行来找到函数体本身(而不是对其进行任何调用)。

例如:/^funcname

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

【讨论】:

  • 当然今天有编程编辑器和 IDE 实际解析代码,可以去定义一个符号,找到一个符号的所有用法等等。所以虽然这可能是一个历史原因,这不应该再成为理由了……
  • 不是每个人都使用 IDE,尤其是 C 开发。事实上,很多人都没有。
  • 虽然我不使用它,所以不知道它是否真的有效,快速谷歌搜索建议例如现代 ctagsvim (并且大概任何支持 ctags 的编辑器)确实有“去定义”。程序员为工具格式化代码(而不是使用工具为程序员格式化代码)似乎也有点倒退。
  • vim -t 从命令行非常方便。此外,一旦您习惯了这种约定,可以说使代码更易于阅读。特别是当返回类型是详细的(struct some_type *)等时,结合使用多个参数的函数。想想(作为一个不好的例子)一些带有 8 个参数的 WINAPI 函数,其中 7 个通常为 NULL。 ;-)
【解决方案3】:

您可以在印度山风格手册 1990 http://www.cs.arizona.edu/~mccann/cstyle.html 中看到这一点。

【讨论】:

    【解决方案4】:

    这只是风格问题,主要是习惯问题。编译器不关心这一点。使用一种你觉得舒服的风格,以及其他人在阅读你的代码时容易遵循的风格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      相关资源
      最近更新 更多