【发布时间】:2017-03-21 16:08:40
【问题描述】:
在头文件中:
inline void func(void); // declare only, with `inline`
在 impl 源文件中:
void func(void) { balabala(); }
在其他源文件中:
func(); // call the func
问题:声明内联函数是否合法,即使它实际上并未内联在头文件中?
PS:
为什么需要这个:我有一些宏生成的函数,可能只在头文件中声明,也可能不声明,所以我希望可以在不明确指定内联或不内联的情况下使用宏
而且,我知道该函数可以被包装类包装为标题中的静态成员函数
棘手的内联解决方案在MSVC和clang下测试没有编译错误,只是想知道它在C++标准中是否合法
【问题讨论】:
-
请注意,
inline关键字与现在编译器是否会实际内联函数无关。但它还有其他含义。