C 声明是否应该与定义匹配,包括关键字和限定符,例如“static”、“inline”等

Jas*_*n S 5 c function keyword

考虑这个函数声明和定义的示例(在同一翻译单元中):

inline static int foo(int x);

...

int foo(int x)
{
  return x+1;
}
Run Code Online (Sandbox Code Playgroud)

我知道类型需要匹配,但是其他关键字和限定符呢?应该inline static是两种情况吧?还是只是声明?

我可以使用 C 标准的哪一部分或哪个编码指南来证明答案的合理性?

Ree*_*ith 0

是的。应该包括内联和静态。例如,函数的代码行在您声明的 .h 文件和您定义的 .c 文件中应该相同(因此在两种情况下都是如此),但在您的主 code.c 文件中它应该只调用时具有函数名称,因此“foo(传递的参数)”。

希望这可以帮助!