c++ - 强制 Visual Studio 仅使用标准 C++,而不使用平台特定的东西

标签 c++ visual-studio

我想用 C++ 和 Visual Studio 2013 编写跨平台算法。

无意间,人们可以使用特定于平台的 API 函数(_beginThreadstrcpy_s 等),当尝试在 Mac 上编译时,会导致错误。

有没有办法强制 Visual Studio 不使用特定于平台的 API(仅使用标准 C++)?

最佳答案

您可以通过 3 种方式实现这一目标。

  1. 使用#ifdef 指令。

    #ifdef _MSC_VER
    strcpy_s(str1, str2);
    #else
    strcpy(str1, str2);
    #endif
    
  2. strcpy_s 创建别名。

    #ifdef _MSC_VER
    #define strcpy strcpy_s
    #endif
    
  3. 将 _CRT_SECURE_NO_WARNINGS 和 _SCL_SECURE_NO_WARNINGS 添加到 Visual Studio 项目中的 C++ 预处理器定义中。仅当您 100% 确定自己在做什么并且使用与平台无关的代码时才这样做。

关于c++ - 强制 Visual Studio 仅使用标准 C++,而不使用平台特定的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470198/

相关文章:

c++ - 包含 stdafx.h 的最佳方法,当它位于第一个目录时?

visual-studio - Visual Studio 需要很长时间才能创建一个项目

c++ - 当用表达式的结果初始化对象时使用哪个构造函数

c++ - 是否可以通过 Windows C++ 应用程序的唯一地址检测到蓝牙设备?

c# - 如何将可选文件复制到 VS 2017 中的输出目录?

c# - 旧版本的 .Net 没有安装最新的 Mono?

c# - 为什么我应该使用 "About box"而不是使用表单来显示 Visual Studio 中的信息?

c++ - 如何测试 std::thread 是否被移出?

c++ - 如何在 C++11 中的一个循环中迭代两个 vector ?

c++ - 收集 n 的 2 次方分解(Python、C++)