内联函数不能分离定义么(.h文件声明,cpp文件定义)

内联函数不能分开定义么(.h文件声明,.cpp文件定义)
// test.h
inline void Test();

// test.cpp
inline void Test()
{
  printf("test");
}

1:为什么会链接失败呢??
2:为什么非得在声明前加上extern才能编译通过呢??

------解决方案--------------------
不能.就和模板实现定义一样,不能分开
------解决方案--------------------
内联函数不是不能分离定义,而是在调用点内联函数的定义必须可见!
------解决方案--------------------
这也是为什么一般将内联函数的定义放到头文件的原因,而且一旦编译器内联失败那么意味着内联函数的定义会在每一个包含其头文件的源文件都有一份定义。