在编译 C 或 C++ 代码时找出 CPU 架构最可靠的方法是什么?据我所知,不同的编译器有自己的一组非标准预处理器定义(MSVS 中的 _M_X86
、GCC 中的 __i386__
、__arm__
等)。
是否有一种标准方法来检测我正在构建的架构?如果没有,是否有各种编译器的此类定义的完整列表的来源,例如带有所有样板 #ifdef
s 的 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/