個答案,以相反的順序:
當前發佈的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支持。 –