首页 > 解决方案 > 我应该在 cpp 文件中定义静态内联方法吗?

问题描述

作为问题的后续,我应该在头文件中定义静态内联方法吗?

如果我在两个单独的 cpp 文件中有两个辅助函数具有相同的签名,编译器会抱怨 ODR。因此,在 cpp 文件中创建自由函数static以避免名称冲突并减少链接器的工作是否是一种好的风格?

inline更普遍地问:制作自由函数或在cpp文件中的优点和缺点是什么staticstatic inline

标签: c++staticinline

解决方案


对此类函数使用匿名命名空间是一种很好的做法:

namespace {
    // your function here; no need for static or inline
}

通过这种方式,它仅限于该翻译单元,对链接器不可见,因此一个定义规则将成立。


推荐阅读