C++ 字符是否是VS中现有的全局类型定义?
我有以下几点C++ 字符是否是VS中现有的全局类型定义?,c++,visual-studio-2010,C++,Visual Studio 2010,我有以下几点 namespace settings{ #if defined(WIN32) && !defined(UNIX) typedef wchar_t char_t; #elif defined(UNIX) && !defined(WIN32) typedef char char_t; #else typedef char char_t; #endif typedef std::basic_string<char_t&
namespace settings{
#if defined(WIN32) && !defined(UNIX)
typedef wchar_t char_t;
#elif defined(UNIX) && !defined(WIN32)
typedef char char_t;
#else
typedef char char_t;
#endif
typedef std::basic_string<char_t> string_t;
typedef std::basic_ostream<char_t> stream_t;
}
我保存了它,这样我就可以将整个应用程序更改为wchar。它在Linux中工作,但当我试图在VS2010中编译它时,它给了我
错误C2371:“设置::字符”:重新定义;不同的基本类型
请参阅“设置::字符”的声明
我的所有代码都使用settings::char\u t和settings::string\u t等。。现在我需要更改所有代码吗?或者有更简单的解决方法?即使它是全局的,您的typedef也包含在名称空间设置中,您将获得有关这方面的更多信息。您确定该文件在项目中没有两次被指定为目标吗?即使它是全局文件,您的typedef也包含在名称空间设置中,您将获得有关这方面的更多信息。您确定该文件在项目中没有被两次定位吗?被两次定位是什么意思?由于标头具有ifndef/def定义,因此不可能双重包含!对我太确定了。IDE没有创建用于保护双重包含的定义。谢谢你说两次被瞄准是什么意思?由于标头具有ifndef/def定义,因此不可能双重包含!对我太确定了。IDE没有创建用于保护双重包含的定义。谢谢