赞
踩
若要使用 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'" />
这个编译警告信息指出 'strdup'
函数的使用已经不推荐,因为它是 POSIX 标准的一部分,而不是 ISO C 或 C++ 标准。为了保持与 ISO C 和 C++ 标准的一致性,建议使用 _strdup
函数,这是 Microsoft 特定实现的 ISO 兼容版本。
在 Microsoft Visual C++ 编译器中,_strdup
是 strdup
的 ISO C++ 兼容替代品。如果你的代码中使用了 strdup
,并且你希望消除这个警告,你可以将其替换为 _strdup
。
以下是如何替换的示例:
// 使用 POSIX 标准的名称
char* myString = strdup("Hello World");
// 替换为 ISO C++ 标准的名称
char* myString = _strdup("Hello World");
请注意,_strdup
函数是 Microsoft 的扩展,可能在其他编译器或平台上不可用。如果你的代码需要在多种平台上兼容,你可能需要使用其他方法来复制字符串,例如使用 std::string
或者 std::strcpy
结合 malloc
。
例如,使用 std::string
:
#include <string>
std::string original = "Hello World";
std::string copy = original; // 复制字符串
或者使用 strcpy
和 malloc
:
#include <cstring>
#include <cstdlib>
const char* original = "Hello World";
char* copy = (char*)malloc(strlen(original) + 1);
strcpy(copy, original); // 复制字符串
记得在使用 malloc
分配内存后,需要在适当的时候使用 free
来释放内存。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。