代码之家  ›  专栏  ›  技术社区  ›  Niklas R

Clang CL warning strnicmp已弃用,请使用符合ISO C和C++的名称U strnicmp

c++
  •  1
  • Niklas R  · 技术社区  · 6 年前

    使用 strnicmp() 在带有Clang CL的窗口上,会发出以下警告:

    main.cpp(176,12):  warning: 'strnicmp' is deprecated: The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strnicmp. See online help for details. [-Wdeprecated-declarations]
    

    现在,我很乐意使用 _strnicmp() ,但我找不到这个函数实际上是ISO C或C++标准的一部分。这个 cppreference 不会列出它,用谷歌搜索只会让你找到 Microsoft page .

    这个函数真的可以安全使用吗(即C/C++标准的一部分)?如果不是,为什么叮当会这样做?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Some programmer dude    6 年前

    这就是重点,最前面的下划线是将函数标记为 标准C的一部分,因为它不是。

    不过,它在Windows中是可用的,所以只要你不关心可移植性,就可以使用它 _strnicmp 你想要多少都行。

    如果你 想要可移植性,那么我建议你做一个包装函数 _strnicmp 在Windows上,以及其他平台上的其他类似功能(例如。 strncasecmp 在Linux或macOS等POSIX系统上)。