1. 程式人生 > >Visual Studio2013的C語言編譯器對C99標準的支援情況

Visual Studio2013的C語言編譯器對C99標準的支援情況

Visual Studio2013終於開始比較良好地支援C99特性了。在此之前,如果用C語言寫程式碼的話,變數名都需要放到函式體的前面部分,程式碼寫起來十分別扭。

而Visual Studio2013中的C編譯器已經支援了不少C99標準,讓我來為大家盤點一下。

現在仍然不支援的語法特性有:

1、inline關鍵字:在VC中,仍然需要用微軟自己定義的__inline,而尚不支援inline,儘管inline在C++中是支援的。

2、restrict關鍵字。

3、_Complex與_Imaginary:儘管VS2013的C語言編譯器可以用complex.h庫,不管這兩個關鍵字不支援。庫的實現用的是描述複數的結構體。

4、變長陣列

除了上述四點,其它主要特性都予以了支援。下面給出一個示例程式碼來給出支援特性的描述:

複製程式碼
#include <stdio.h>

#define MY_PRINT(...)   printf(__VA_ARGS__)

static __inline int MyGetMax(int x, int y)
{
    return x > y ? x : y;
}

int main(void)
{
    MY_PRINT("%s\n", "Hello, world!");

    int arr[] = { [0] = 100, [2] = 200, [8] = 400
}; MY_PRINT("The value is: %d\n", arr[2] + arr[3]); struct Test { int x; float f; _Bool b; long long ll; }test = {.x = 10, .f = -0.5f, .b = 0}; struct Test t = (struct Test){ .ll = 100LL }; for (int i = 0; i < test.x; i++) t.x += test.x;
int *p = (int[]){ [1] = t.x, [3] = test.b + test.ll }; MY_PRINT("The value is: %d\n", p[0] + p[1] + p[2] + p[3]); }
複製程式碼

相關推薦

Visual Studio2013的C語言編譯器C99標準支援情況

Visual Studio2013終於開始比較良好地支援C99特性了。在此之前,如果用C語言寫程式碼的話,變數名都需要放到函式體的前面部分,程式碼寫起來十分別扭。 而Visual Studio2013中的C編譯器已經支援了不少C99標準,讓我來為大家盤點一下。 現在仍

Android 瀏覽器 HTML5 的支援情況

Android 4.0 用的還是 Android 瀏覽器而不是 Chrome。Google 稱 Chrome 將是 Android 以後的瀏覽器,但 4.0 還不是。 智慧手機和平板的合併 Android 4.0 合併了智慧手機和平板電腦兩個版本,因此智慧手機直接從

visual studio 2015C/C++標準支援情況

VS2015對C99的支援幾乎是完備的,除了tgmath.h和CX_LIMITED_RANGE/FP_CONTRACT pragma macros。(不曉得支援inline不? :)) 看來可以用vs2015移植很多Linux下的開源專案了,如ffmpeg(其實從VS20

實現Codeblock支援C99標準

在使用codeblock13.12學習C語言時 我寫有如下形式for迴圈程式碼: for(int i = 1; i < m ; i++) { ...; } 編譯是會出現如下錯誤:|64|error: 'for' loop initial declarati

修改Go語言(golang)編譯器原始碼讓它支援UTF-8 BOM

  Go語言(golang)第一個正式版Go1釋出了,但是這個新興的程式語言還是非常不完善。這不,我(Liigo)又發現它的編譯器竟然不支援編譯帶BOM的UTF-8編碼的.go原始檔。這就很奇怪,該語言明明要求原始碼檔案.go必須是UTF-8編碼,但又不允許帶UTF-8

BUILD 2015: Visual StudioGitHub的支援

微軟BUILD 2015大會上釋出了Visual Studio 對GitHub的支援。安裝瞭如下Developer Assistant外掛後,你便可以在Visual Studio中找到GitHub上的示例程式碼,或一鍵下載GitHub上知名的開源專案

各C/C++編譯器wchar_t字元和字串的正確支援程度

      傳統的C風格的字串是以字元 '/0 '為結尾的一系列位元組的集合,其一個單元為char型別,可以儲存世界上的幾百種不同的字符集,包括ASCII、ISO-8859、GBK、BIG-5、SHIFT-JIS、UTF-8等等。通常這些字符集都是相容ASCII字符集的

主流編譯器C++11的支援現狀比較

GCC 4.8剛剛釋出,Clang 3.3也釋出在即,如果你使用Visual Studio 2012,也可以通過安裝一個實驗性的CTP更新(VS2012 Nov CTP)來獲取額外的C++11支援;除此之外,這裡還比較了Intel C++編譯器v.13.0,不過這仍然是一個預覽版。 特性 VS

零基礎學Java編程語言就要癥下藥

選擇學習Java編程語言,大部分人還是沖著高薪就業去的,既然如此,就業是學習Java的最終目的,企業需要什麽我們就學什麽。熱點資訊 下面小編就來分析一下企業需要什麽,這些也是我們在學習中應該著重關心的。當然,如果你是因為興趣或是喜歡才學Java編程依然可以看一下,學以致用。

c語言字段寬度的理解?

style lib include creat span 演示 file code pre 1 /************************************************************************* 2 >

第5課 嵌入式C語言編譯器

進行 1.5 編譯器 編譯過程 結構 java 頭文件路徑 color bject 1. GCC與gcc (1)GCC:(GNU Compiler Collection)   GNU編譯器集合,包含眾多語言的編譯器,如C、C++、Java、D、Objective-C等 (2

安裝Visual Studio 語言包時出現windows 程序兼容模式已打開.請將其關閉

.cn class clas exe data- ng- mage ima win 打開 cmd.exe 輸入 安裝包路徑 /Uninstall例如:D:\vs_lang_cn.exe /Uninstall (中間有個空格,Uninstall前是個左斜杠)回車 後 安

WEB標準以及W3C的理解與認識

ron 提高 搜索引擎 class 編程 簡單 命名 組織 事情 網頁主要由三個部分組成,表現、結構和行為。 我理解的就是: html是名詞--表現 css是形容詞--結構 javascript是動詞--行為 以上這三個東西就形成了一個完整的網頁,但是js改變時,可以會

WEB標準以及W3C的理解與認識?

出了 htm 表現 一定的 css 編程 用戶體驗 組成 命名 web標準簡單來說可以分為結構、表現和行為。其中結構主要是有HTML標簽組成。或許通俗點說,在頁面body裏面我們寫入的標簽都是為了頁面的結構。表現即指css樣式表,通過css可以是頁面的結構標簽更具美感。行為

面向象-標準的手機類代碼及其測試

system rand() null turn xxx str set sys col 1 /* 2 作業:請把手機類寫成一個標準類,然後創建對象測試功能。 3 4 手機類: 5 成員變量: 6

推薦一個WebIDE在線編程語言編譯器C9.io

隨著 ruby 支持 工作 lan 使用 github 編譯 寬帶 有時借用別人電腦或者不想在電腦上安裝各種亂七八糟的IDE,就可以考慮 Web IDE。隨著Web技術發展,很多語言的編譯工作都可以利用Web 瀏覽器來完成。 1. 推薦國外的 C9.io 個人可

匯編語言——編譯器

start 聯系 strong sem brush not class 是我 匯編指令 一個匯編語言程序從寫出到最終執行的簡要過程: 編寫--〉編譯--〉連接--〉執行 1、編寫 notepad++選擇Assembly assume cs:abc ; abc被我們當做

Go語言微信約戰棋牌網站搭建新技術怎麽看?

並行 java、 而是 進行 和我 goroutin 進入 並不是 learn 上個月,作為 Go 微信約戰棋牌網站搭建( h5.super-mans.com Q:2012035031)微信約戰棋牌網站搭建語言的三位創始人之一,Unix 老牌黑客羅勃·派克(Rob P

Visual Stdio C++ 編譯器、鏈接器常用命令行 (轉)

線程 dna pretty 文件 入口 all 如果 name -o2 以前使用 Visual Stdio 都是在 IDE 環境下。這兩天編譯 GSL 感覺用 IDE 環境特別不方便,所以就花了點時間簡單學習了如何在命令行下使用 Visual Stdio C++ 編譯器、連

五、CLR加載程序集代碼時,JIT編譯器性能的產生的影響

幫助 leaves 控制流程 斷點 繼續 操作系統 optimize visual image 1、CLR首次加載代碼造成的性能損失 四、CLR執行程序集中代碼介紹了CLR在首次執行一個類的時,會初始化一個內部結構,然後當目標方法被首次調用時,JITCompli