从 int 到 wchar_t 的转换无效

Invalid conversion from int to wchar_t

本文关键字:转换 无效 int wchar      更新时间:2023-10-16

这是我的文件代码。

文件1.cpp

void CIME::AddExceptKey(wchar_t key)
{
    m_exceptKey.push_back(key);
}

文件2.cpp

PyObject *imeAddExceptKey(PyObject *poSelf, PyObject *poArgs)
{
    int key;
    if(!PyTuple_GetInteger(poArgs, 0, &key))
    {
        return Py_BuildException();
    }
    CPythonIME::Instance().AddExceptKey(key);
    return Py_BuildNone();
}

这是我的警告:

warning C4242: 'argument': conversion from 'int' to 'wchar_t', possible loss of data

警告在这一行:

CPythonIME::Instance().AddExceptKey(key);

我做错了什么?我尝试了wchar_t钥匙,但没有机会。

int

的大小可以是 2 或 4 个字节,具体取决于实现和wchar_t的大小也在 2,3 或 4 个字节的数据之间变化。它警告可能会丢失数据。你必须调试,看看是否有任何损失。

在没有

强制转换的情况下,不能在需要wchar_t的地方使用 int。

CPythonIME::Instance().AddExceptKey((wchar_t)key);

但是,我真的怀疑这是您想要做的。 我不知道这些函数是做什么的,但是"GetInteger"和"AddExceptKey"表示您正在获得一个键码并按字符添加键。 所以请在投掷之前进行RTFM,否则你可能会有意想不到的行为。