不同架构cpu上的c语言编译器,关于c ++:检测CPU架构的编译时

编译C或C ++代码时找出CPU体系结构的最可靠方法是什么? 据我所知,不同的编译器具有自己的非标准预处理器定义集(MSVS中的_M_X86,GCC中的__i386__,__arm__等)。

有没有检测我要构建的体系结构的标准方法? 如果不是,是否有针对各种编译器的此类定义的完整列表的来源,例如带有所有样板#ifdef的标头?

操作系统检测的基本答案相同:stackoverflow.com/questions/142508/

这是有关预定义体系结构宏和其他类型的预定义宏的一些信息。

这个问题会问它们在GCC源代码中的定义位置。

C或C ++标准是否定义了供不同编译器使用的任何建议性宏。

这似乎是正确的,但是有人可以引用使用它的GCC文档吗?

没有内部编译器标准,但是每个编译器都趋于一致。您可以为自己构建标题,如下所示:

#if MSVC

#ifdef _M_X86

#define ARCH_X86

#endif

#endif

#if GCC

#ifdef __i386__

#define ARCH_X86

#endif

#endif

列出完整的列表没有什么意义,因为有成千上万的编译器,但被广泛使用的只有3-4个(Microsoft C ++,GCC,Intel CC或TenDRA?)。只需确定您的应用程序将支持哪些编译器,列出其#defines并根据需要更新标头即可。

这在Visual Studio 2010上对我不起作用。肯定没有定义_M

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值