【问题标题】:static/inline keyword: in front of prototype and/or implementation?静态/内联关键字:在原型和/或实现之前?
【发布时间】:2014-05-25 16:14:05
【问题描述】:

对于静态函数,我总是将 static 关键字放在源文件开头的函数原型前面,而在其实现中省略它。

所以说我有这样的东西:

#include <stdio.h>

static int foo(int bar);

int main(void) {
    return foo(2);
}

int foo(int bar) {
    printf("%d\n", bar);
    return 0;
}

我没有这样做的技术理由,我只是认为所有必要的“元信息”都属于原型,而实现代码是为了……嗯,实现。我知道它有效,但我想知道:

在原型实现之前声明static是更好的做法,还是如上所示可以这样做?

inline 也一样。

【问题讨论】:

  • 我更喜欢您的方法,如果您决定将函数设为 extern,则更改的内容更少。

标签: c static


【解决方案1】:

原型应该是函数的原型,所以它应该承载实现所做的一切。

如果您迟于错过将其添加到实现中并且编译器知道它暗示的原型。

但是,为了避免人类读者的误解,也将其添加到实现中。

【讨论】:

  • 所以基本上编译器会把原型作为函数的“信息源”,寻找匹配的实现?但你是对的,将关键字添加到原型函数更合适。
【解决方案2】:

我建议该定义和声明应该相同。如果函数不匹配,会有一些编译器会出错!您的代码将无法在编译器之间移植

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多