如何取消定义_MSC_VER?

2024-01-09

我在 Visual Studio 中工作,但我的项目是基于 POSIX 的环境(marmalade sdk)。在这个项目中,发布 build 是用 gcc for ARM 编译的,但是 debug 版本可以在 Windows 上运行,并由 MS 编译器编译。此外,该环境还有自己的 STL 和其他标准库的实现。

许多 C++ 库都有这样的代码:

#if defined( _MSC_VER )
   #include <Windows.h>
#else
   #include <pthread.h>
#endif

是否可以取消定义 _MSC_VER 宏? - 这样 C++ 库将在这里检测 POSIX 系统。


_MSC_VER是(并且始终应该)在使用 Microsoft 编译器进行编译时定义的,以便它“评估编译器版本号的主要和次要数字组件”。因此,代码使用了错误的宏测试,因为无论 Windows 环境差异如何,它始终会为编译器定义为某个值。

而不是破坏定义_MSC_VER(如果任何代码确实想知道编译器版本,这可能会导致其他问题),您真正应该做的是纠正条件,以便使用更合适的宏测试来区分您所使用的 Windows 环境类型可能会遇到。

查看您可以考虑的更完整的预定义宏列表here https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros

您可以更换条件...

#if someOtherConditionGoesHere

...或者用附加条件来扩展它,例如

#if defined(_MSC_VER) && someOtherConditionGoesHere
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何取消定义_MSC_VER? 的相关文章

  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • 成员字段、构建顺序

    在 C 中 当执行如下所示的操作时 构造顺序是否得到保证 Logger Logger kFilePath logs runtime log logFile kFilePath 是的 施工顺序始终得到保证 但是 不能保证它与对象在初始值设定项
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • C# - Visual Studio 中的 System.OutOfMemoryException

    我遇到问题 当我右键单击 Visual Studio 中的主窗体并转到 视图设计器 时 出现错误 它说 引发了 System OutOfMemoryException 类型的异常 堆栈跟踪 at System Reflection Asse
  • C++0x 初始值设定项列表示例

    我想看看这个现有代码示例如何利用 C 0x 初始化列表功能 示例0 include
  • 如何检查号码是否只有唯一的数字?

    例如 2345 是唯一的数字 因为没有数字显示两次 但 3324 不是唯一的数字 因为 3 出现了两次 我尝试使用 但我 代码 显示但我没有得到数字我得到了数字 编辑 你不能使用字符串 number 10 number 100 number
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • 何时分离或加入 boost 线程?

    我有一个方法 大约每 30 秒触发一次 我需要在一个线程中包含它 我有一个可以从类外调用的方法 像 call Threaded Method 这样的东西会创建一个线程 该线程本身会调用最终的线程方法 这些是 MyClass 的方法 void
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 如何在 ASP.NET Core 项目中使用 MStest 测试 Ok() 结果

    我正在使用 MStest 来测试我的控制器 我想测试这个动作 HttpGet Name GetGroups public async Task
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v

随机推荐

  • 如何在scapy中多次发送一个udp数据包?

    如何在scapy中多次发送一个udp数据包 我需要多次发送有效的 udp 数据包 scapy中有什么具体的方法或功能吗 干得好 sendp p iface eth0 inter 1 count x Where p是您的数据包或数据包列表 并
  • binascii.Error:无效的 base64 编码字符串:数据字符数 (1957) 不能多于 1 4 的倍数

    我试图将字符串解码为 base64 然后将其解压缩为 zlib 但出现以下消息 binascii Error 无效的 base64 编码字符串 数据数量 字符 1957 不能多于 4 的倍数 1 Code def decode token
  • 提取 URL 的一部分

    我需要提取hello world此网址的一部分 http example com tags hello world 我对拆分 替换和连接完全感到困惑 最好的方法是什么 我会这样做 var newString oldString replac
  • 使用 Find_All 函数返回意外结果集

    我正在使用 python 3 8 2 和 bs4 BeautifulSoup 我正在尝试查找标签的所有实例 并将每个实例都列在结果集中 每行一个 但是 返回的结果集包含的行数多于网站的原始抓取内容 这是因为结果集的第一行包含该标记的所有实例
  • 角度将文件输入转换为 base64

    我正在尝试在我的 Angular 项目中解析输入到 Base64 的文件 在我的模板中 我有
  • 为什么所有递归模式同义词都被拒绝?

    LANGUAGE PatternSynonyms ViewPatterns data Quun Foo Bar Oink Quun fooey Quun gt Bool fooey Foo True fooey Oink Yum True
  • 如何将外部 .js 文件导入到 Commands.js 中? [Office.js Excel]

    导入不同版本中的函数的正确方法是什么 js脚本写入commands jsOffice Excel 功能区加载项的脚本 这是我的commands html file
  • 有Python库可以处理OWL吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 它可能是像这样大的东西Jena http jena sourceforge net 或者更小的东西 你
  • python无法导入模块

    我使用包设置了我的程序 如下所示 base init py base class py test init py test py 当我做导入声明时from base base class import BaseClass in the te
  • 如何更改Bootstrap-select的边框颜色

    对于像 Bootstrap 这样的自定义框架 选择https silviomoreto github io bootstrap select https silviomoreto github io bootstrap select 如何更
  • 主屏幕上的 iPhone WebApp 持久性

    我创建了一个可以保存到 iPhone 上 主屏幕 的网络应用程序 该应用程序使用画布 并且与不断变化的状态具有相当的交互性 每当应用程序最小化并重新打开时 它都会重置回初始状态 关闭应用程序并重新加载时会发生相同的情况 如预期 如何防止应用
  • 在 .NET 中以编程方式配置网络适配器的最佳方法

    我有一个用 C 编写的应用程序 需要能够在 Windows 中配置网络适配器 我基本上通过 WMI 进行工作 但该解决方案有一些我不喜欢的地方 有时设置似乎不固定 并且当未插入网络电缆时 从 WMI 返回错误方法 所以我无法判断他们是否真的
  • 如何在包装类(来自 C++)中重写 __setattr__?

    Using boost python 我已经能够包装一堂课 Node 它有一些虚拟函数 这很有趣 但现在我试图覆盖setattr getattr为了班级 我有boost python打电话给我自己的setattr实现 但我不知道如何避免发生
  • gitlab更新后查看项目时出现错误500

    dpkg query W gitlab gitlab 7 3 2 omnibus 1 我们在 Ubuntu 14 04 1 LTS 上运行 gitlab 6 9 2 按照此处找到的说明进行操作后https gitlab com gitlab
  • 您可以播放“热门”帖子吗?

    假设我想从 Reddit 子版块 新闻 中流式传输帖子 然而 帖子非常频繁 我们不能说每个帖子都值得 所以我想通过尝试流式传输 热门 列表来过滤好帖子 但我不确定这是否可能 或类似的事情是否可能 通常 我会这样做来传输帖子 for subm
  • Azure Web 应用程序配置设置中的“Key Vault 引用错误”

    我有一个由 azure 为 Linux 容器的 Web 应用程序生成的私有证书 我想通过 azure 门户中的 Web 应用程序配置设置将此值传递给我的 net core 应用程序 这是管道 CI CD 流程的一部分 在应用程序配置中指定
  • 这个 Promise 嵌套可以改成链式吗?

    这是伪场景 then items then items actions getItems getActions for items apply actions gt items promise promise model lt items
  • Firebase 存储 url,新文件保留相同的访问令牌

    重复 Firebase 存储 URL 不断随着新令牌的变化而变化 https stackoverflow com questions 46094676 firebase storage url keeps changing with new
  • 通过风格/调试构建更改字符串资源

    假设我们有 strings test xml 它存储用于测试的字符串值 并且应该在调试版本中显示 当 apk 构建为发布版本时 所有值都应更改为空字符串 例如
  • 如何取消定义_MSC_VER?

    我在 Visual Studio 中工作 但我的项目是基于 POSIX 的环境 marmalade sdk 在这个项目中 发布 build 是用 gcc for ARM 编译的 但是 debug 版本可以在 Windows 上运行 并由 M