我有一个全局帮助函数,由头文件中的一堆宏使用。目的是通过简单地 'ing 单个标头来允许宏可用#include
(换句话说,我想将函数定义保留在标头中,并避免将其放在单独的编译单元中)。但是,当应用程序#include
的此文件在多个编译单元中时,这会导致问题,因为出现重复符号问题。
辅助函数具有足够的特性,不应将其声明为内联。
我搞砸了,发现使用未命名的命名空间解决了重复符号的问题,即:
namespace
{
void foo(...)
{
}
};
#define HELPER_A foo(1, ...);
#define HELPER_B foo(2, ...);
...
这种方法有什么缺点吗?有更好的选择吗?