成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MSVC宣布支持C11和C17標準

開發 前端
日前微軟VS團隊宣布,將在Visual Studio 2019版本16.8預覽版3開始,正式支持C11和C17為MSVC編譯器。

日前微軟VS團隊宣布,將在Visual Studio 2019版本16.8預覽版3開始,正式支持C11和C17為MSVC編譯器。多年來,Visual Studio僅在C++要求的范圍內支持C。隨著兩個新的編譯器開關/std:c11和/std:c17的出現,VS將正式支持最新的ISO C語言標準。

MSVC宣布支持C11和C17標準

概述

支持C11和C17的所有必需功能,將會添加這些功能:_Pragma,restrict,_Noreturn和,_Alignas,_Alignof和,_Generic和,_Static_assert

IntelliSense本身也具有這些功能,只需為源文件使用.c文件擴展名或/TC編譯器開關即可為C代碼啟用語法突出顯示。

MSVC宣布支持C11和C17標準

IntelliSense高亮僅適用于關鍵字,不適用于標準標頭引入的宏。由于C17本質上只是ISO C的錯誤修復版本,并且采用了許多缺陷報告,因此對C11的支持已經包括所有相關的缺陷報告。目前,C11和C17版本之間沒有什么區別,除了__STDC_VERSION__宏,該宏擴展為201112L(對于C11)和201710L(對于C17)。

這是顯示這些功能的示例:

  1. #include <assert.h> 
  2. #include <stdalign.h>#include <stdlib.h>#include <stdnoreturn.h>#define NO_WARN(X) _Pragma("warning (push)") _Pragma("warning (disable: 4146)") X;  _Pragma("warning (pop)") 
  3. #define store(x, y) _Generic((x), data*: stored, int* : storei)(x, y) 
  4. typedef struct data { 
  5. _Alignas(8) unsigned int i; 
  6. } data; 
  7. static_assert(alignof(data) == 8, "data is not properly aligned"); 
  8. void stored(data* restrict dst, const data* restrict src) 
  9. {// Do not trigger warning 4245 
  10. dst->i = NO_WARN(-(src->i)); 
  11. void storei(int* restrict dst, const int* restrict src) 
  12. *dst = *src; 
  13. noreturn void my_exit(int ret) { 
  14. exit(ret); 
  15. int main() { 
  16. data src, dst; 
  17. src.i = 5
  18. int i, j; 
  19. i = 10
  20. store(&src, &dst); 
  21. store(&i, &j); 
  22. my_exit(0); 

由于包含了基于令牌的一致性預處理器,因此這兩個新的C編譯器開關暗示/Zc:preprocessor。如果要與C11或C17一起使用基于字符的傳統預處理器,則需要顯式傳遞編譯器開關/Zc:preprocessor-。

盡管目前不支持任何C11可選功能,會在將來的版本中提供最具影響力的可選功能。原子和線程支持在我們的路線圖上。目前尚不支持對復數的支持,并且通過適當的功能測試宏來強制不支持復數。

由于Windows堆的性質,缺少對aligned_alloc的支持。另一種方法是使用_aligned_malloc。

此外,由于realloc更改可能會破壞ABI,因此目前尚未實現DR 400支持。

同時也不支持VLA。可變長度數組通常比可比的固定大小數組效率低,并且在安全可靠地實現時,與等效數組相比效率通常較低。VLA存在gets()安全問題,可以被 "轉移堆棧"和其他的利用。由于這些原因,VLA支持僅僅為可選功能。

基本設置

為了在程序中使用C11或C17,需要最新的Windows SDK更新才能與兼容的預處理器(/Zc:preprocessor)并在新的Universal C Runtime下工作。Windows SDK版本與Windows OS版本相對應。由于沒有更改對應的Windows版本,因此需要一個Insider Preview Windows SDK-Windows SDK的預覽版本,該版本與當前為Windows Insiders發行的Windows版本相對應。注意,在安裝Insider Preview Windows 10 SDK之后,配置為使用最新Windows SDK的Visual Studio項目將使用Insider Preview。

登陸Microsoft Insider

任何人都可以創建一個免費的Microsoft帳戶,然后選擇加入Insider程序, "注冊"并登錄。

MSVC宣布支持C11和C17標準

注冊后,將提供開始運行Insider版本的Windows的選項,但是下載和使用Insider Windows 10 SDK是非必須的。

MSVC宣布支持C11和C17標準

一旦你點擊這個頁面,你就不會需要點擊"Flight now"。繼續進行下一步,并下載Insider Preview Windows 10 SDK。

下載Insider Preview Windows 10 SDK

可以從software-download/windowsinsiderpreviewSDK安裝Insider Preview Windows SDK。

MSVC宣布支持C11和C17標準

Insider頁面描述了需要使用Windows 10 Insider Preview OS。對于Windows SDK中包含的某些內容,這是正確的,取決于Windows的較早版本中不存在的新API,但是Windows和Universal C Runtime標頭將正確安裝并且在沒有Insider OS的情況下可用。

點擊"獲取SDK Insider預覽-內部版本20206"開始下載。Windows SDK的將來版本也將起作用。

安裝Insider Preview Windows 10 SDK

Insider Preview Windows SDK將作為.iso文件下載。

MSVC宣布支持C11和C17標準

掛載.iso文件并運行WinSDKSetup.exe以開始安裝。

MSVC宣布支持C11和C17標準

選擇在計算機上安裝Windows軟件開發套件,然后單擊下一步。必須選擇是否允許深入了解Windows SDK的使用,并且必須接受許可協議,然后才能到達功能部件安裝頁面。應該安裝的唯一功能(除非使用Windows 10的Insider Preview構建):

  • 適用于桌面應用程序的Windows SDK簽名工具
  • 適用于UWP托管應用程序的Windows SDK
  • 適用于UWP C ++應用程序的Windows SDK
  • Windows SDK for Desktop C++ x86應用程序(為x86進行構建)
  • Windows SDK for Desktop C++ arm64應用程序(為arm64構建)
  • Windows SDK for Desktop C++ ARM應用程序(為ARM構建)
MSVC宣布支持C11和C17標準

SDK將花費幾分鐘的時間來完成安裝,然后就可以打開Visual Studio 16.8 Preview 3。

配置C11或C17模式

為了在Visual Studio 16.8 Preview 3中支持C11和C17。可以直接載最新的Preview版本。

在項目中,打開"屬性"頁面。確保該項目將使用Insiders Preview Window 10 SDK。將Windows SDK版本設置為10.0.20206.0(或剛剛安裝的最新的Insider Preview Windows 10 SDK)。

MSVC宣布支持C11和C17標準

將能看到一個新選項:C語言標準。

MSVC宣布支持C11和C17標準

當語言為C++時使用C++語言標準,當文件擴展名為.cpp為默認設置。當語言為C時,使用C語言標準版本,擴展名為.c,默認c版本。為確保使用C11或C17構建項目,必須確保它是文件,或在"屬性"選項卡中將代碼設置為編譯為C。

MSVC宣布支持C11和C17標準

這些項目更改之后,就可以測試使用C11和C17。

總結

支持C11和C17,這對使用VS Windows的開發者來說是個好消息,希望大家嘗鮮使用。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2020-06-01 21:07:33

C11C++11內存

2019-09-18 09:05:26

微軟開源Windows

2022-03-01 08:58:10

Linux 內核C11GNU 方言

2022-02-25 14:13:28

LinuxC語言開發

2021-04-12 10:38:51

CC++谷歌

2011-10-13 10:21:01

C++

2012-12-25 10:52:23

IBMdW

2022-02-25 14:51:39

LinuxC語言Linux 內核

2022-02-25 15:49:08

Linux開源社區C語言C11

2013-09-25 14:20:46

2013-03-18 09:42:47

C++C++ 11

2009-06-23 21:11:35

Linux

2012-02-15 09:36:50

C++ 11

2013-05-30 00:49:36

C++11C++條件變量

2011-11-01 09:29:52

LinuxWindows開源軟件

2023-05-24 10:39:30

Windows 11微軟

2023-12-18 09:26:12

C++switchif

2020-11-05 13:00:07

C語言編程語言

2021-01-28 15:25:11

W3CIETFWebRTC

2009-08-04 14:14:11

C#編碼標準
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产伦一区二区三区四区 | 在线观看视频一区二区三区 | 91se在线 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 日本一区二区三区精品视频 | 91久久精品一区二区二区 | 精品在线播放 | 亚洲有码转帖 | 欧美一级在线 | 成人在线一区二区 | 国产精品久久久久婷婷二区次 | 99久久成人 | 天天宗合网| 国产精品欧美一区二区三区不卡 | 午夜精品一区二区三区在线观看 | www.久久.com| 精品国产成人 | 色综合视频在线 | 一区视频在线免费观看 | 国产一区二区三区免费 | 久久精品电影 | 中文字幕1区2区3区 日韩在线视频免费观看 | 91传媒在线观看 | 久久国产视频播放 | 亚洲人va欧美va人人爽 | 欧美成人精品二区三区99精品 | 伊人手机在线视频 | 99久久国产 | 中文字幕在线观看 | 国产免费一区二区三区 | 一级欧美一级日韩片免费观看 | 国产欧美一区二区三区日本久久久 | 91观看 | 成人午夜激情 | 99爱国产 | 99久久免费精品国产男女高不卡 | 亚洲在线视频 | 在线观看中文字幕视频 | 91成人影院 | 国产一区二区三区四区 | 国产99视频精品免视看9 |