【问题标题】:Compilation error when calling _tcsstr and assigning to a wchar_t*调用 _tcsstr 并分配给 wchar_t* 时出现编译错误
【发布时间】:2010-10-03 00:03:02
【问题描述】:

我在尝试构建以前可以运行的 C++ 项目时遇到编译错误。

代码如下:

const wchar_t* pdest;
pdest = _tcsstr(ConnStr, Name);

错误如下: 错误 10 错误 C2440: '=' : 无法从 'const char *' 转换为 'const wchar_t

我使用的是Visual Studio 2008。错误信息很好地解释了问题,但我知道这个程序用来编译,我做错了什么?

【问题讨论】:

    标签: c++ visual-studio-2008


    【解决方案1】:

    您的代码很危险。 _tcsstr 是一个 TCHAR 宏,因此它的定义可以根据是否定义了 UNICODE 来改变。 wchar_t 是固定的。您看到的错误是由于这个确切的问题 - 环境正在使用 _tcsstr 的单字节版本(可能是因为未定义 UNICODE)。

    不要只定义 UNICODE。先修复代码。要么对两者都使用 TCHAR 宏,要么对宽字符函数使用。

    【讨论】:

    • 我在调试模式下编译而不是在 unicode 模式下编译,这就是为什么以前可以工作,但现在不行。感谢您的帮助。
    【解决方案2】:

    _tcsstr 用于 TCHAR。根据编译设置,这是 char 或 wchar_t。

    所以要么使用TCHAR,要么使用wcsstr

    【讨论】:

      【解决方案3】:

      这应该可以解决这个问题:

      属性 -> 配置属性 -> 常规 -> 字符集:使用多字节字符集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多