Visual Studio 支持 C 嗎?

既然 Windows 是用彙編 + C 編寫的,那麼是用 Visual Studio 編寫嗎?微軟內部用什麼軟體編寫彙編程序呢?Visual Studio 作為專門的 C 語言開發工具,效果怎麼樣?


Windows只有Hardware Abstration Layer用彙編寫,其餘的都用C和大量的C++來寫,這才保證可以在不同的平台上迅速移植(你只要給新的指令集寫新的HAL就可以了)。Visual Studio支持C模式,指的是Visua Studio所支持的所有C++功能里,C也有的那一部分。


支持的,彙編語言也支持,VS裡面有工具可以支持彙編代碼文件, 不過要問windows中用到的C代碼是不是VS編譯的我就不太清楚了......


我們能夠看到的Windows代碼有:

Win2000泄露代碼,是泄露出來的關於windows內核和基本應用程序的代碼

WRK代碼,是微軟提供的基於windows server 2003的內核源碼

這兩套代碼都不是用vs來維護的,採用的都是makefile的方式。


Visual Studio包含微軟的C/C++編譯器CL,鏈接器Link,庫管理器Lib,Makefile解釋器 NMake等基本工具鏈。

因此當然可以使用Visual Studio開發C項目,雖然由於其CRT只支持Windows,而不能使用其自帶的編譯器等進行跨平台開發。


1 包括Windows在內,目前主流的操作系統其中彙編實現部分所佔比率都不多。

2 用什麼工具/IDE沒必要糾結。很多時候開發不同層面的組件/模塊/軟體都需要不同的工具,這個跟語言關係不大。當然VS功能越來越強,集成度越來越高,以前需要多種IDE/工具而現在只需要一個VS Solution的情況也變多了。

3 VS開發C語言程序很好用。無論編輯,編譯,還是Debug。

題主的問題真的很難回答……


題主從哪裡看出來VS不支持C的。

就從新建解決方案的時候選語言列表裡面沒有C么?

正確方式是這樣的:

選C++建立解決方案

然後建立源代碼文件的時候,後綴名改成.c

這樣VS就會用C編譯器去編譯了。

另外我知道你們有些人想用scanf這種東西。

在代碼開頭加上:

#define _CRT_SECURE_NO_DEPRECATE

或者直接加到編譯器編譯選項里去就好了。


/TC 編譯成C代碼 /TP編譯成C++代碼 否則 什麼後綴名編譯成什麼


從 另一個問題 為什麼VS不支持C語言? - 編程語言 跳轉而來。感覺這兩個問題的標題 與 說明 之間的邏輯關係有點奇怪,所以就問題的標題作為提問的意圖予以回答。

答案: VS支持C語言, 但是其支持的C語言特性有限(比如Visual Studio 2012貌似就對C99標準支持得非常有限,具體的支持範圍沒有深挖過)。

在Visual Studio中建立VC項目,默認的情況下是將源碼視作C++代碼來進行編譯。但是對項目文件進行下述設置後,則可使該項目將源碼(不論文件後綴是.c還是.cpp)視作C代碼,並按照C語言的語法來實施編譯。

在 Visual Studio 2013 Community(microsoft.com 的頁面)中方法如下:

右擊項目文件

-&> [Properties]

-&> [Configuration Properties]

-&> [C/C++]

-&> [Advanced]

-&> [Compile As]

-&> 設置為「Compile as C code(/TC)」

截圖如下:

另外,建議是如果想基於IDE開發跨平台(主要指兼容Unix系OS與Windows)的C程序,可以考慮 Eclipse CDT + Cygwin (P.S. 然而Cygwin的大部分庫是基於GPL許可證發布的,開發商用程序需謹慎) 。另一個問題的題主 @奇真亦假 你也可以看一下,希望有用。


Visual Studio 是一套工具,其中 Visual Studio C++ (不知道現在還這麼叫不,免費的也有express版本吧,以下簡稱VC) 是支持C的,但是支持的標準有限,比較老,不好理解的話,就是有些C代碼你從網上弄過來也編譯不過的。VC的好處是調試非常方便,某些定製為VC的工程,也只能用VC開發。

非要在MS Windows下學習C的話,推薦你使用MinGW的工具和GCC編譯器環境,開源安裝包下載後,安裝非常方便,現在對windows支持得很好了。

IDE啥的真不是核心問題,只是個人偏愛了,比如可以使用CodeBlock,短小精幹。

如果對eclipse有鍾愛,eclipse + CDT

根據不同場合,幾種IDE我都使用。 個人偏愛 emacs,無論Linux還是Windows,圖形或者終端,都非常順手,雖然她不是IDE,但對初學者來說學習門檻比較高,除非心態很好。


你只要在工程樹里,把源碼文件後綴名改為c,vs的編譯器就會自動按照c語言編譯了。


題主的問題其實是 : 我應不應該嘗試下VS這個工具呢?

你就是缺少嘗試新東西的勇氣 才會問這種問題。明明知道那個工具不錯那個東西不錯 就是不去試驗,而是到處讓別人給你理由不去嘗試。。

我為什麼知道? 因為我就是這種貨色 正在改正。。

好吧 我又揣測別人的動機了。。。政治不正確 必須匿。


Visual C++肯定是支持C語言的,別被他的名字給忽悠了。不過支持到C語言的哪個標準版本,就不好說了。C89的支持,問題肯定是不大的。

MSDN里有描述:

How Do I Compile and Link C Code, Not C++?

Give your files the .c extension, for example mysource.c. The Visual C++ compiler automatically assumes that files with the .C extension are C files and not C++ files, and rejects C++ syntax and keywords (such as public, private, and class).

C++ files use the .cpp extension.

See the /TC, /TP compiler options for more information.

Compiling a C Program

Visual C++ 2008 includes a C compiler that you can use to create everything from simple Visual C programs to Windows API applications.

__STDC__

Indicates full conformance with the ANSI C standard. Defined as the integer constant 1 only if the /Za compiler option is given and you are not compiling C++ code; otherwise is undefined.


槽點滿滿…


討論那些沒用的……

項目-&>屬性-&>cc++-&>高級-&>編譯為

裡面選擇,編譯為C代碼(/TC)

另外請注意下,寫操作系統和寫應用程序不是一個概念,最好不要有【XX系統都是某語言寫的,要學就學某語言】的概念。C語言現在還是有非常多的應用,但很不幸,WINDOWS下能用上的地方很少很少,如果使用VS開發,那估計是前途堪憂。如果樓主是想在微軟體系內寫程序,去學C#沒有其他備選。


直接在.cpp 文件里寫c 代碼會有問題么…

也有可能是我在C 上寫的代碼太低級…


推薦閱讀:

win10安裝visual studio 2015 出現安裝包丟失或損壞是什麼原因?
有哪些好用的c#代碼編輯器?
都說Visual Studio 是宇宙第一的IDE,那麼和其他IDE相比他到底好在哪呢?

TAG:MicrosoftWindows | 操作系統 | C編程語言 | 集成開發環境 | MicrosoftVisualStudio |