C++中内联函数inline的另一影响
发布时间:2021-11-23 15:03:03 所属栏目:教程 来源:互联网
导读:内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。 今天在coding时遇到多次定义一个函数而使ld返回错误的情况。大致过程如下: 首先,在一个头文件中定义了一个类及其实现: test.h: #ifndef TEST_H #define TEST_H class A{ pub
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。 今天在coding时遇到多次定义一个函数而使ld返回错误的情况。大致过程如下: 首先,在一个头文件中定义了一个类及其实现: test.h: #ifndef TEST_H #define TEST_H class A{ public: void fun(); }; void A::fun(){ } #endif 然后分别有两个文件: a.cpp: #include"test.h" void tt() { } b.cpp: #include<iostream> #include"test.h" using namespace std; void tt(); int main() { A a; tt(); return 0; } 而后,将a和b分别编译之后就会出错: 想了想,是由于分开后在a.o和b.o中都分别定义了A的fun()函数,因此会发生冲突。 ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |