char_t VS 中现有的全局类型定义

is char_t an existing global typedef in VS?

本文关键字:全局 类型 定义 VS char      更新时间:2023-10-16

我有以下内容

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 中工作,但是当我尝试在 VS 2010 中编译相同的内容时,它给了我

错误 C2371:"设置::char_t":重新定义;不同的基本类型 请参阅"设置::char_t"声明

我所有的代码都使用 settings::char_tsettings::string_t 等。现在我需要更改所有代码吗?或者有一些更简单的出路?

即使它是一个全局的,你的 typedef 也包含在 namespace setting 中,你会得到更多关于这一点的信息。您确定该文件不会在项目中被定位两次吗?