Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS 2019 stricmp和_stricmp都会导致编译器错误_C++_C++14_Case - Fatal编程技术网

C++ VS 2019 stricmp和_stricmp都会导致编译器错误

C++ VS 2019 stricmp和_stricmp都会导致编译器错误,c++,c++14,case,C++,C++14,Case,源代码本身并没有什么问题。这是编译器对它的反应。下面是一个麻烦的片段: int XtnUtil::IsExtension(const char * filename, const char * xtn) { char* fx = FindExtension(filename); // Get a pointer to the filename extension if (!fx) return 0; // Ba

源代码本身并没有什么问题。这是编译器对它的反应。下面是一个麻烦的片段:

int XtnUtil::IsExtension(const char * filename, const char * xtn)
{
    char*   fx  =   FindExtension(filename);    //  Get a pointer to the filename extension
    if  (!fx)   return  0;                      //  Bail out if it's not there

    if  (xtn[0] == '.') xtn++;                  //  Make sure we're looking at the alpha part
    return  (stricmp(fx, xtn) ? 0 : 1);     //  TRUE if they're equal
}
我还使用了
\u stricmp
而不是
stricmp
。在任何一种情况下,编译器都会给我一条特别没有信息的消息:

它似乎在说“不要使用_stricmp,而是使用_stricmp”。我尝试了带下划线和不带下划线的方法,还尝试了POSIX等效方法,
strcasecmp()
,但Visual Studio似乎根本不知道该函数。


目前,我已经通过编写自己的名为
mystricmp()
的函数克服了这个问题,这有点令人讨厌,但似乎可以工作。现在我最感兴趣的是为什么编译器给了我这么一条时髦的消息,如果我必须手工编写的函数不是琐碎的,我能做些什么呢?

请不要使用文本图片!这使得搜索错误消息变得更加困难,您应该首先执行此操作。此外,您应该提取并提供一个,而不是一个有大量缺失上下文的代码段。在错误列表选项卡附近,您应该找到输出选项卡。它包含纯文本形式的完整且未加修饰的错误消息。这不仅可以轻松地粘贴到堆栈溢出问题中,而且完整的错误消息中还遗漏了错误列表的详细信息。通常,这些额外的细节会使情况大为恶化。FindExtension是否会将char*指针返回到const char*缓冲区?这是不安全的编码。添加编译定义
\u CRT\u nonsdc\u NO\u警告
,并正常使用
stricmp