内联函数如何在C ++中工作?

tangwenqiang

现在我有2个c ++源文件:test9.cpp test10.cpp,它们都具有同名的内联函数。

test9.cpp:

1 #include <iostream>
2 using namespace std;
3 void test();
4 inline void f1()
5 {
6     cout << "inline f1 in test9.cpp" << endl;
7 }   
8 int main()
9 {
10     f1();
11     test();
12     return 0;
13 } 

test10.cpp:

1 #include <iostream>
2 using namespace std;
3 inline void f1()
4 {
5     cout << "inline f1 in test10.cpp" << endl;
6 }   
7 void test()
8 {
9     f1();
10 } 

现在用g ++编译它们:g ++ test9.cpp test10.cpp ./a.out我得到以下结果:

inline f1 in test9.cpp
inline f1 in test9.cpp

怎么了?我以为是:“ test9.cpp中的内联f1 in test10.cpp中的内联f1”,谁能告诉我原因?g ++编译器如何处理内联函数?

轨道轻赛

尽管编译器将允许您(不,要求您!)重新定义标记inline功能,但外部链接的默认设置仍然适用,因此您违反了“一个定义规则”。这将导致不确定的行为和您看到的结果。

[C++11: 7.1.2/4]:内联函数应在使用过的每个翻译单元中定义,并且在每种情况下均应具有完全相同的定义(3.2)。[..]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

#defined函数如何在C中工作?

来自分类Dev

C ++中的内联函数

来自分类Dev

如何在类方法调用内联中嵌套函数调用

来自分类Dev

如何在HTML中内联定义AngularJS函数?

来自分类Dev

带参数的函数调用如何在C中工作?

来自分类Dev

函数的模板推导如何在C ++中工作?

来自分类Dev

`cout`函数实际上是如何在c ++中工作的?

来自分类Dev

模板成员函数如何在c ++中工作?

来自分类Dev

嵌套函数如何在MATLAB中工作?

来自分类Dev

函数如何在javascript中工作

来自分类Dev

super()如何在构造函数中工作

来自分类Dev

map()函数如何在python中工作?

来自分类Dev

函数如何在javascript中工作

来自分类Dev

超函数如何在Java中工作?

来自分类Dev

callMe函数如何在javascript中工作

来自分类Dev

dist函数如何在MATLAB中工作?

来自分类Dev

calc() 函数如何在 CSS 中工作?

来自分类Dev

评估函数如何在 keras 中工作

来自分类Dev

and&or 如何在 print() 函数中工作?

来自分类Dev

C中的递归函数如何工作

来自分类Dev

函数printf在C中如何工作?

来自分类Dev

c ++中的副本构造函数如何工作?

来自分类Dev

C 中的 time() 函数是如何工作的?

来自分类Dev

ios :: fmtflags如何在C ++中工作?setf()如何工作?

来自分类Dev

C中的内联汇编无法正常工作

来自分类Dev

C中的内联汇编无法正常工作

来自分类Dev

#include如何在C ++中工作?

来自分类Dev

“ Hello World”如何在C中工作

来自分类Dev

整数溢出如何在C中工作?