内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
今天在coding时遇到多次定义一个函数而使ld返回错误的情况。大致过程如下:
首先,在一个头文件中定义了一个类及其实现:
test.h:
然后分别有两个文件:
a.cpp:
b.cpp:
而后,将a和b分别编译之后就会出错:

想了想,是由于分开后在a.o和b.o中都分别定义了A的fun()函数,因此会发生冲突。
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
今天在coding时遇到多次定义一个函数而使ld返回错误的情况。大致过程如下:
首先,在一个头文件中定义了一个类及其实现:
test.h:
然后分别有两个文件:
a.cpp:
b.cpp:
而后,将a和b分别编译之后就会出错:

想了想,是由于分开后在a.o和b.o中都分别定义了A的fun()函数,因此会发生冲突。