即使foo内联定义但未声明为以下代码,并且bar内联声明但未定义为以下代码,下面的代码段也可以毫无问题地进行编译。
int foo();
inline int foo() { return 3; }
inline int bar();
int bar() { return 4; }
inline int foobar();
inline int foobar() { return 5; }
int main(){
// ...
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题:编译器是否读foo为内联?那bar呢 这是由C ++标准指定的吗?
我的第二个问题:声明和定义内联函数的最佳实践是哪一个?是foo吗 bar?还是foobar?为什么?
inb4我阅读了与此相关的其他文章,但没有一个直接回答我的问题。
这个答案似乎暗示这foo是内联的,但是什么也没说bar。它也没有解释为什么 foo比其他人更受欢迎。该答案讨论了何时应该使用内联函数。这不是我的担心:我已经决定使用内联函数。我的问题(确切地说是问题2)是我应该这样声明还是定义它,或者两者都定义,为什么其中一个约定比其他约定更好。这个问题似乎更接近我的关注,但没有人回答。
(注意:我重新打开了这个问题,因为这不是引用的旧问题的重复。该问题涉及设计;这是关于语法的)。
现在,参考OP在关于定义和声明中内联的问题中引用的问题,答案指出,如果声明位于头文件中,那么它就有“内联”(“条形样式”),因为其他使用该标头的源文件将尝试链接到它,就好像它是非内联函数和文件一样。
就我个人而言,我会使用
inline int foobar() { return 5; }
Run Code Online (Sandbox Code Playgroud)
在头文件中,无需单独声明。(我总觉得如果它太大而无法放入标题中,那么它也太大而无法内联。)
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |