关于全局函数的声明和定义的问题
我在一个common.h文件中定义了一个全局函数
void ArraySet(double *pArr, int len, double initValue)
{
return;
}
然后工程中有两个文件分别包含了(直接或间接)这个头文件。就会出现重定义的错误:
1>Linking...
1>BB.obj : error LNK2005: "void __cdecl ArraySet(double *,int,double)" (?ArraySet@@YAXPANHN@Z) already defined in AA.obj
请问这是为什么?
该如何解决这个问题,如果我就是想定义这么一个全局函数,该怎么办?
现有的解决方法:
1. 将实现移到cpp文件中去
2. 改为static函数
3. 将该函数包装到类里去,并作为类的static函数
请问哪个方法最好?