【问题标题】:is char_t an existing global typedef in VS?char_t 是 VS 中现有的全局 typedef 吗?
【发布时间】:2012-08-12 12:02:30
【问题描述】:

我有以下

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:'settings::char_t':重新定义;不同的基本类型 见'settings::char_t'的声明

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

【问题讨论】:

    标签: c++ visual-studio-2010


    【解决方案1】:

    即使它是全局的,您的 typedef 也包含在 namespace setting 中,您将获得有关此的更多信息。您确定该文件没有在项目中被两次定位吗?

    【讨论】:

    • 被定位两次是什么意思?双重包含是不可能的,因为标题有 ifndef/def 定义
    • 哦!是的。我太确定了。 IDE 没有创建定义来保护双重包含。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2011-09-17
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多