'wcsncasecmp'未在此范围内声明

'wcsncasecmp' was not declared in this scope

本文关键字:范围内 声明 wcsncasecmp      更新时间:2023-10-16

我包含了来自simpleJSON的文件JSONValue,它用于解析json字符串。在编译时,我得到这个错误,'wcsncasecmp'没有在这个范围内声明。在这条线上。在搜索更多关于wcsncasecmp是gnu特定函数的信息时,我正在使用windows,所以有人可以帮助我吗?

else if ((simplejson_wcsnlen(*data, 4) && wcsncasecmp(*data, L"true", 4) == 0) ||     (simplejson_wcsnlen(*data, 5) && wcsncasecmp(*data, L"false", 5) == 0))
    {
    bool value = wcsncasecmp(*data, L"true", 4) == 0;
    (*data) += value ? 4 : 5;
    return new JSONValue(value);
}

。如有任何帮助,我将不胜感激。

在windows上可以使用_wcsnicmp

更多ref: _strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

请在源代码中定义WIN32宏或在Visual Studio中添加到项目/属性/C/c++/预处理器定义

#define WIN32

内部它将定义wcsncasecmp_wcsnicmp,就像Rohan已经提到的那样。这是SimpleJSON的一个已知问题。

// Win32 incompatibilities
#if defined(WIN32) && !defined(__GNUC__)
    #define wcsncasecmp _wcsnicmp
    static inline bool isnan(double x) { return x != x; }
    static inline bool isinf(double x) { return !isnan(x) && isnan(x - x); }
#endif