当前位置:   article > 正文

VS C++常用错误与解决方法_vs中strdup

vs中strdup

无法找到 v143 的生成工具(平台工具集 =“v143”)

若要使用 v143 生成工具进行生成,请安装 v143 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”。 MatchTool C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets 439

<!-- Error if toolset not found -->
<VCMessage Code="MSB8020" Type="Error" Arguments="$(_PlatformToolsetShortName);$(PlatformToolset)" Condition="'$(DesignTimeBuild)' != 'true' and '$(_ToolsetFound)' != 'true'" />
  • 1
  • 2

在这里插入图片描述

‘strdup’: The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strdup. See online help for details

这个编译警告信息指出 'strdup' 函数的使用已经不推荐,因为它是 POSIX 标准的一部分,而不是 ISO C 或 C++ 标准。为了保持与 ISO C 和 C++ 标准的一致性,建议使用 _strdup 函数,这是 Microsoft 特定实现的 ISO 兼容版本。

在 Microsoft Visual C++ 编译器中,_strdupstrdup 的 ISO C++ 兼容替代品。如果你的代码中使用了 strdup,并且你希望消除这个警告,你可以将其替换为 _strdup

以下是如何替换的示例:

// 使用 POSIX 标准的名称
char* myString = strdup("Hello World");

// 替换为 ISO C++ 标准的名称
char* myString = _strdup("Hello World");
  • 1
  • 2
  • 3
  • 4
  • 5

请注意,_strdup 函数是 Microsoft 的扩展,可能在其他编译器或平台上不可用。如果你的代码需要在多种平台上兼容,你可能需要使用其他方法来复制字符串,例如使用 std::string 或者 std::strcpy 结合 malloc

例如,使用 std::string

#include <string>

std::string original = "Hello World";
std::string copy = original; // 复制字符串
  • 1
  • 2
  • 3
  • 4

或者使用 strcpymalloc

#include <cstring>
#include <cstdlib>

const char* original = "Hello World";
char* copy = (char*)malloc(strlen(original) + 1);
strcpy(copy, original); // 复制字符串
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

记得在使用 malloc 分配内存后,需要在适当的时候使用 free 来释放内存。

Windows 下Qt Creator构建错误
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/756369

推荐阅读