个答案,以相反的顺序:
当前发布的Visual Studio版本都不支持ARMv8/AArch64,他们只支持的ARMv7。尽管Windows 10本身显示出支持arm64的迹象(有一些针对arm64的可执行文件和库),但据我所知,迄今为止已发布的编译器版本实际上并没有包含它。 (Visual Studio 2015社区至少不包括它,而且几天前发布的新Visual Studio“15”Preview 2也是如此)。显然,它存在于内部,但它并没有成为任何一部分尚未公开发布。
至于什么定义寻找;这是目前未知的,因为目前没有公开的编译器arm64目标版本的文档,因为它还没有发布,而且也不能经验性地进行测试。
我没有看到任何来自Microsoft的明确声明或者您的链接的话,这将是支持的,但至少在Windows 10 SDK确实表明它正在处理明显迹象。
编辑:
即使编译器不可用,在Windows 10 SDK(它本身包含了ARM64库)头和Visual C++ 2015年的头文件(其中没有匹配的ARM64库)还含有对此的引用。与_M_ARM
类似,还有_M_ARM64
。从vc/include/intrin.h
一个片段:
#if defined (_M_ARM)
#include <armintr.h>
#include <arm_neon.h>
#endif
#if defined (_M_ARM64)
#include <arm64intr.h>
#include <arm64_neon.h>
#endif
EDIT2:
虽然没有公版的Visual C++编译器瞄准arm64的产品尚未推出,铛越来越支持的第一部分为Windows/arm64和他们还利用_M_ARM64
:
https://github.com/llvm-project/clang/commit/5b7d7d2b2d0bd7054f51b9d108cdd5299a0ec33e#diff-ed544af3ae6807a8513b1cabb3233941R6576
编辑3:
随着Visual Studio 2017 15.4版的最新更新,ARM64编译器被发布。在安装程序中,可以手动检查“Visual C++编译器和ARM64库”项目(默认情况下未启用)。
这样做之后,可以启动“开发者命令提示符为VS 2017年”,并在shell中运行“vsdevcmd -arch = arm64 -host_arch = amd64的”,那么你已经有了路径编译:
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.4.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>vsdevcmd -arch=arm64 -host_arch=amd64
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.4.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25547 for ARM64
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>
而这个编译器预先定义了_M_ARM64
它允许你识别它,从而回答这个问题。
内部函数是一个编译器实现细节,与SDK无关。使用这样的旧编译器不能让你在任何地方,VS版本15(不是VS2015)现在也在预览中。期待Alpha版本出现问题,向connect.microsoft.com报告错误和缺少的功能,而不是SO。或者等到它完成。 –
@HansPassant - 我不确定你在说什么报告错误?它是一个简单的问题:微软支持ARM64,那么我们如何检测它?它是堆栈溢出的完美问题。 – jww
ARM64在这两个链接中都没有提到,它们都表示“ARM”,最大4GB RAM(用于移动设备),在“工业”IoT版本上没有ARM支持。 –