自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

概述

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

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

IntelliSense高亮僅適用于關(guān)鍵字,不適用于標(biāo)準(zhǔn)標(biāo)頭引入的宏。由于C17本質(zhì)上只是ISO C的錯誤修復(fù)版本,并且采用了許多缺陷報告,因此對C11的支持已經(jīng)包括所有相關(guān)的缺陷報告。目前,C11和C17版本之間沒有什么區(qū)別,除了__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); 

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

盡管目前不支持任何C11可選功能,會在將來的版本中提供最具影響力的可選功能。原子和線程支持在我們的路線圖上。目前尚不支持對復(fù)數(shù)的支持,并且通過適當(dāng)?shù)墓δ軠y試宏來強制不支持復(fù)數(shù)。

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

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

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

基本設(shè)置

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

登陸Microsoft Insider

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

下載Insider Preview Windows 10 SDK

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

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

安裝Insider Preview Windows 10 SDK

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

  • 適用于桌面應(yīng)用程序的Windows SDK簽名工具
  • 適用于UWP托管應(yīng)用程序的Windows SDK
  • 適用于UWP C ++應(yīng)用程序的Windows SDK
  • Windows SDK for Desktop C++ x86應(yīng)用程序(為x86進行構(gòu)建)
  • Windows SDK for Desktop C++ arm64應(yīng)用程序(為arm64構(gòu)建)
  • Windows SDK for Desktop C++ ARM應(yīng)用程序(為ARM構(gòu)建)
MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

配置C11或C17模式

為了在Visual Studio 16.8 Preview 3中支持C11和C17??梢灾苯虞d最新的Preview版本。

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

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

將能看到一個新選項:C語言標(biāo)準(zhǔn)。

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

當(dāng)語言為C++時使用C++語言標(biāo)準(zhǔn),當(dāng)文件擴展名為.cpp為默認(rèn)設(shè)置。當(dāng)語言為C時,使用C語言標(biāo)準(zhǔn)版本,擴展名為.c,默認(rèn)c版本。為確保使用C11或C17構(gòu)建項目,必須確保它是文件,或在"屬性"選項卡中將代碼設(shè)置為編譯為C。

MSVC宣布支持C11和C17標(biāo)準(zhǔn)

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

總結(jié)

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

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2020-06-01 21:07:33

C11C++11內(nèi)存

2019-09-18 09:05:26

微軟開源Windows

2022-03-01 08:58:10

Linux 內(nèi)核C11GNU 方言

2022-02-25 14:13:28

LinuxC語言開發(fā)

2021-04-12 10:38:51

CC++谷歌

2011-10-13 10:21:01

C++

2012-12-25 10:52:23

IBMdW

2013-09-25 14:20:46

2022-02-25 14:51:39

LinuxC語言Linux 內(nèi)核

2022-02-25 15:49:08

Linux開源社區(qū)C語言C11

2013-03-18 09:42:47

C++C++ 11

2012-02-15 09:36:50

C++ 11

2013-05-30 00:49:36

C++11C++條件變量

2023-12-18 09:26:12

C++switchif

2009-06-23 21:11:35

Linux

2020-11-05 13:00:07

C語言編程語言

2021-01-28 15:25:11

W3CIETFWebRTC

2009-08-04 14:14:11

C#編碼標(biāo)準(zhǔn)

2011-11-01 09:29:52

LinuxWindows開源軟件

2023-05-24 10:39:30

Windows 11微軟
點贊
收藏

51CTO技術(shù)棧公眾號