02
2014/08
问题在C++ programming language一书的第九章中描述了C++的单一定义规则,ODR,根据这一规则,“一个inline函数必须在需要用他的每个编译单位里通过完全一样的定义来定义”并且举了例子:file1.c:inline int f(int i) { return i; }
file2.c:inline int f(int i) {return i+1;} 书中说这个例子是非法的,因为在两个编译单位中的定义不完全相同那么,下面是我写的一个代码,也是我的问题:我的程序分为main.cc、func.cc和function.h三个文件,main.cc和func.cc中定义了两个如上面反例所写的同名inline函数,他们的函数体并不相同,function.h中是这个inline函数的声明:/*
* file: main.cc
* author: 龙泉居士
* date: 2012-10-17 04:37
*/
#include <iostream>
#include "function.h"
using namespace std;
int main ()
{
f(3);
return 0;
}
inline void f (int a)
{
cout <<
#读书笔记
#技术帖
#c++
#cpp