我感興趣地閱讀了這篇文章「C99如何被普遍支持?」。其中的一條評論指出,微軟不支持C99。但評論符號//與VS 2008一起工作,這個符號在C99中。我有兩個問題:MS VS 2008和C99
VS 2008支持C99到什麼程度?
在相同的代碼中混合使用C89和C99語法可以嗎?所以如果我在C89中編寫我的代碼,然後發表評論//。這意味着我有混合編碼。那麼編譯器在這種情況下做了什麼?首先用c89檢查我的代碼,然後用C99接受我使用//進行評論?
我感興趣地閱讀了這篇文章「C99如何被普遍支持?」。其中的一條評論指出,微軟不支持C99。但評論符號//與VS 2008一起工作,這個符號在C99中。我有兩個問題:MS VS 2008和C99
VS 2008支持C99到什麼程度?
在相同的代碼中混合使用C89和C99語法可以嗎?所以如果我在C89中編寫我的代碼,然後發表評論//。這意味着我有混合編碼。那麼編譯器在這種情況下做了什麼?首先用c89檢查我的代碼,然後用C99接受我使用//進行評論?
MSVC在C模式下支持很少的C99。它所做的一些事情(如'//'註釋)實際上是他們添加到C90模式的擴展,它們來自C++,這可能也發生在C99中。編譯C代碼時,MSVC將'//'註釋視爲C90的擴展,而不是將C90代碼與C99代碼混合在一起。
你會被編譯你的C文件作爲C++獲得「好」的C99支持 - 以這種方式,你會得到可與被限定在for
環路for
的陳述和變量聲明穿插聲明,對例。
微軟似乎沒有興趣向MSVC添加C99支持 - 即使它們將C99中的東西添加到C++編譯器模式(如在VS2010中添加了stdint.h
),因爲C++中有一些額外的C99事件正在添加到C++中, + 0X。
謝謝。我通常使用擴展名c而不是cpp來保存文件,因爲我在C中工作。擴展名對編譯器有影響嗎?奇怪的是,沒有提到MSVC有一個C編譯器;它只是提到了C++編譯器。 – yCalleecharan 2010-04-16 21:07:22
擴展名默認情況下有所不同 - .c文件以C模式編譯,.cpp和.cxx文件以C++模式編譯。您可以使用'/ TP'或'/ Tp'來強制編譯爲C++和'/ TC'或'/ Tc '強制編譯爲C:http://msdn.microsoft.com/en-我們/圖書館/ 032xwy55.aspx –
2010-04-16 21:11:13
這是有趣的知道。謝謝。 – yCalleecharan 2010-04-16 21:12:06