c++ - 检测 CPU 架构编译时

标签 c++ c detection cpu-architecture compile-time

在编译 C 或 C++ 代码时找出 CPU 架构最可靠的方法是什么?据我所知,不同的编译器有自己的一组非标准预处理器定义(MSVS 中的 _M_X86、GCC 中的 __i386____arm__等)。

是否有一种标准方法来检测我正在构建的架构?如果没有,是否有各种编译器的此类定义的完整列表的来源,例如带有所有样板 #ifdefs 的 header ?

最佳答案

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

#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,并根据需要更新您的 header 。

关于c++ - 检测 CPU 架构编译时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152016/

相关文章:

c++ - 释放一对 vector 中对象的内存

java - 是否会在编译时优化局部变量的一次性使用?

c++ - CreateThread() 的成本有多高?

检查数组中的所有字符是否都是整数

c - 一个数组对象的最后一个元素的基本原理是什么?

c - 将结构数据保存到 void* 变量

opencv - 使用鱼眼镜头进行物体检测

OpenCV 平行线剔除

python - 使用 Python,有没有办法自动检测图像中的像素框?

c++ - Boost::python - 在 python 类的对象上填充指针的 C++ vector