我有一个名为" access"在项目中。这实际上是在项目内的许多地方使用的。目前我正在为这个项目编写单元测试用例。我的单元测试,io.h文件包含在UT框架工作中。这个io文件包含名为" access"的c函数。因此,当我尝试同时包含io文件和我的一个项目文件时,我得到了重新定义错误" access"。
所以我尝试使用代理头来解决上述问题。对于代理头,我在命名空间中包含了框架工作头文件,以避免重新定义错误。
但该框架工作文件访问一些全局命名空间。所以我遇到了更多问题。有没有办法在不重命名命名空间的情况下解决问题。
这是我的示例代码。
#pragma once
#include "io.h"
#include <iostream>
class Class01
{
public:
Class01(void);
~Class01(void);
void function() {
std::cout<< " Write something";}
};
#pragma once
namespace access
{
class Class02
{
public:
Class02(void);
~Class02(void);
};
}
代理标题
#pragma once
namespace sample
{
#include "Class01.h"
};
#include "Class02.h"
// NamespaceRedef.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//#include "Class02.h"
//#include "Class01.h"
#include "proxyHeader.h"
using namespace sample;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
编译代码时,出现以下错误......
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):error C2039:&#39; acosf&#39; :不是“全局命名空间”的成员。&#39;
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):错误C2873:&#39; acosf&#39; :符号不能用于使用声明
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):error C2039:&#39; asinf&#39; :不是“全局命名空间”的成员。&#39;
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):错误C2873:&#39; asinf&#39; :符号不能用于使用声明
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atanf&#39; :不是“全局命名空间”的成员。&#39;
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atanf&#39; :符号不能用于使用声明
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atan2f&#39; :不是“全局命名空间”的成员。&#39;
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atan2f&#39; :符号不能在using声明中使用crosoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atanf&#39; :符号不能用于使用声明
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atan2f&#39; :不是“全局命名空间”的成员。&#39;
1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atan2f&#39; :symbol不能在using-declaration中使用