考虑以下一个函数声明和定义的例子(在同一翻译单元中):
我知道类型需要匹配,但其他关键字和限定符呢?
另外,我可以使用 C 标准的哪一部分或者哪些编码规范来证明这个答案呢?
inline static int foo(int x);
...
int foo(int x)
{
return x+1;
}
我知道类型需要匹配,但其他关键字和限定符呢?
inline static
在两种情况下都需要吗?还是只在声明中需要?另外,我可以使用 C 标准的哪一部分或者哪些编码规范来证明这个答案呢?
inline
完全没有意义。无论如何,编译器都可以内联每个定义。 - Jens Gustedt-O1
优化不会自动内联小函数(但您可以使用inline
强制执行),而具有-O2
或-O3
优化的高级版本则会。但我的问题是普遍的,我正在寻求的建议适用于 clang / gcc / XC16。 - Jason Sinline
来定义函数,并在稍后的某个地方进行“实例化”,即不带inline
的声明。通过这样做,你可以确保代码的可移植性。 - Jens Gustedt