Visual Studio 2019可以用來玩C語言嗎?
剛學C語言,課上只是上理論的。有自己開過電腦打過代碼,那個電腦上的是C free。想在自己的電腦上下一個練練C,書本上推薦Visual C++ ,但是我只下到了這個visual studio,而且不知道怎麼用。
更新: VS2019 16.8 開始支持 C11/17 語核的非可選部分(例如 _Generic )。注意 C99 中有些必須支持的內容從 C11 起改為可選。而標準庫部分除了 C++11 與 C11 的共同部分,其餘工作尚未完成。
另外 aligned_alloc 因為 Windows 堆實現模式,目前沒有支持的計劃。
----
MSVC 沒有完整支持 20 年前的 C99 標準。你看下是否適合吧。
MSVC 實現的標準 C 功能有:
- 完整的 C94 ( C89 + 後續寬字元支持)
- 不完整的 C99 語核(缺複合字面量、非常量長度數組、 T [static N] 函數參數等)
- 少數 C11 中標準化的擴展(如匿名 struct/union 成員)
- C99 標準庫
- 包含於 C++ 的 C11 標準庫部分(有少量缺失)
- 與 C11 標準略有區別的 _s 系列函數
基本上還是不要把 MSVC 當成用 C 開發的東西了。如果需要 VS 的話可以考慮 Visual Studio + Clang 。
你課本上那點東西是沒問題的,反正VS2019不支持的部分你極大概率用不上
不能,微軟從不開發C語言編譯器。
請使用C++的C語言模式代替(逃
可以用,我覺得部分答主一刀切就說vs不支持c語言,這種說法是不負責任的
- vs是ide,支持使用不同的編譯器,clang,msvc都行
- 最好的選擇是clang,支持最新標準,而且大量兼容gcc擴展
- cl也只有少部分特性不支持,默認是使用後綴名區分c和c++,也可以用 /Tc 強制指定
- gcc也能用,但智能提示出錯,而且不能調試
綜上,開發c語言建議vs搭配clang編譯器使用,配置方法可參考https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/
可以,而且windows下入門我比較推薦VS,原因很簡單:
新手最大的障礙是debug,而這恰恰是VS的優點。
VS對新手最大的優點有兩個:
1、VS漢化很棒,編譯報錯信息基本都能看懂,不存在英語門檻。即使不懂英語,也能一看就能知道幾行哪裡出了什麼錯,十分方便定位。
2、VS查看堆棧、打斷點/條件斷點/次數斷點、查看內存、跟蹤/修改變數值等debug方法的學習成本極低,十分方便調試。
這些對新手的重要程度遠比什麼C99標準是否完整支持重要。很多人都抱著一種何不食肉糜的心態來選取自己心目中最好的IDE或編譯器,全然不顧剛上手的人最需要什麼。如果是新手上路,我甚至最推薦DEV,因為學習成本更低,這樣他才能將重點放在學習語法上,而非選擇IDE上。然後再慢慢深入到VS上。直接上手VS稍微有一點困難,但遠比gcc+gdb學習成本低得多。
每一個環境都有缺陷,VS對新手最大的缺陷就是scanf默認不支持,比較難受,但是解決成本也不高,但在教學方面的優點確實突出。重點是我們是程序員,要能分析需求,而且要能根據客戶的具體需求來選擇,而不是僅評價性能。他的確有諸多的不好,但是最適合眼下,那就是你了。所以我還是很推薦的。
祝好。
可以的,畢竟沒人攔著你在 VS 里用 Clang + CMake 不是(逃
一群人在說C99那些個VLA啥的,問題是這玩意兒你學C語言能遇上幾次啊?從網上抄100個C程序99個都能編譯過剩下一個小改改就行你還要啥自行車?
誰也沒指著C語言吃飯,當語言律師也沒啥前途,反正這個階段寫程序就是玩,有的玩你就玩唄。
其他答主可能都已經工作或者是浸淫C語言好多年的人了,不太了解你的真實需求,那就讓我來答一下。
先說下軟體。我高三自學C語言用的是vc++6.0(這個真的不推薦用),大一開C語言課的時候老師推薦的Dev C++(推薦使用),然後我自己載了個vs2015做課設用,後來換vs2017。
回到題目上來,剛學C語言,又只是練書上的內容,那就用Dev C++,你可以網上下載一個壓縮包解壓即用,也不大,大概幾十MB吧。不要聽大佬們說它怎樣怎樣,起碼我C語言的理論和課設,C++的理論和課設,數據結構(c++)的理論和課設,它都能勝任。現在大二上學期快上完了,以後就是上java課了。你看我這一路走過來Dev C++是完全夠用,而且我們這邊有幾個程序設計大賽的指定軟體就是Dev C++。大佬說的那些問題,我估計你整個大學生涯都不會遇到。除了一個問題……現在書上不是都寫的void main么,你得改成這樣:
int main() {
//代碼
return 0;
}
不然它會報錯,讓你的main函數必須返回一個值,不能是void(就是不返回值)
當然你也不用卸載你的vs2019,又不是不能共存。但vs2019是真的好用,就是對你來說可能會有點水土不服。你先用Dev C++熟悉了C語言編程的一些最基礎的知識以後,發現問題能自己解決(或者google,百度解決),會Debug(起碼得知道怎樣用斷點吧……),又有空餘時間,那就可以試試看使用vs2019了。不得不說vs2019的各種功能還是很舒服的。要舉個例子的話,vc++6.0就像是毛坯房裡面放張硬板床和其他傢具,簡陋但能滿足基本需求,能住人。Dev C++就像是小康家庭的精裝房,住的舒服,要啥有啥。vs2019就是大豪宅大別墅,裡面所有東西都很豪華很高科技,甚至會大到你迷路,甚至你在裡面住了一年了還有很多地方沒去過,甚至你燒個蛋炒飯都不知道他的高科技灶台要怎麼開,高科技洗碗機要怎麼用。
咳咳,扯遠了。
就站在萌新的角度看,首先就是創建項目的時候要新建空項目,或者選控制台應用之後選空項目,別有預編譯頭那些「稀奇古怪」的東西。創建好以後,在左邊的解決方案資源管理器里的源文件那裡,右鍵,添加,新建項,然後選C++文件(別問為什麼),但是下面的名稱記得把後綴改成.c(比如main.c)。創建完之後還有一步,在第一行先複製粘貼一個這玩意兒:
#define _CRT_SECURE_NO_WARNINGS
這是用來關閉安全警告的,不然你用scanf或者fscanf之類的函數會報錯,書上一般就這麼寫,不會給你整個scanf_s啥的。
到這裡前置準備就算是完成了,你可以盡情編寫你的代碼了。
等到有時間你可以去學一下git,然後在github之類的網站上實踐一下,建立一個私有倉庫,然後做一些提交更改,創建分支,合併分支,拉取代碼之類的操作。不得不說vs2019配合git是真的很好用。
其實要是想避免那些大佬們說的東西,你可以折騰一下vscode+clang(網上教程也一大堆了),輕量,美觀,好用,而且你以後要是換linux系統的話也可以用(linux上可就沒有vs2019或者Dev C++這種東西了)
當然要是換linux的話甚至可以直接vim寫代碼然後cmake,還有其他各種方法,不過那些東西就太遠了,並且我也不是很了解,而且和題目無關,就不展開說了。
可以.
如果只是玩你完全可以按自己喜歡的方式來,
Visual studio 太大,安裝賊慢,還對新標準支持不完整,逼格太低沒法當語言律師,不喜歡,換
Visual studio code 配置太麻煩,插件下載慢,一堆config搞不懂啥玩意,我就喜歡那種上手就能幹的,不喜歡,換.
DEV C艹 逼格太低,還不能看asm,換.
VIM emacs + gcc 我就想要個蘿蔔,不想知道蘿蔔怎麼種出來的也不想學怎麼給蘿蔔雕花,換.
你覺得哪一個自己用的舒服,用就是了,別整天糾結語言的新標準特性,大部分情況就是做個蘿蔔燉排骨,卻整天糾結這個蘿蔔能不能雕花,真的,一!點!意!思!都!沒!有!
我寫了十餘年的C,用C+Script的方式解決了N個從底層驅動到VM機到圖形交互的項目問題,現在用的還是Visual Studio 2010仍然使用C89標準(可能帶有少數擴展)寫程序,包括但不限於上面的開發方案都用過.一堆新標準新特性你要我用我大多也能用.
我就搞不明白了,這樣寫出來的程序是不好用還是有bug什麼的.
C11寫的1+1可以等於2,我C89寫的就必須等於3?
還是說甲方會可以跑到我屏幕面前指著我大罵:麻蛋你個菜雞碼農,給我寫的項目不是最新標準的C寫的,沒寫makefile來編譯,調試也上gdb不用命令行,我要和你解約.
在我看來,至少大部分的新特性,要不解決的就是少打兩個字母的問題,要不就是一些大半輩子都碰不到的問題,有些確實解決了一些實質的問題,比如一堆回答在說的VLA,有用么,有的時候還真有用,寫STFT,DWT時我是一萬個想用VLA來開個計算緩存,但臣妾辦不到啊,我不想未來某個時候,這個程序用在了某個嵌入式環境的編譯器上時又報了一堆錯,與其到時口嫌體正直地老老實實改回老標準,你幹嘛不一開始就使用老標準來寫,是老標準寫出來的不好使了還是說新標準一腳把老標準踹開說以後都不再支持了?
鑒於我以前的工作環境,大半時間再做一些信號處理和分析的演算法,另一半時間在和一堆怎麼便宜怎麼來的新晶元新環境戰鬥,在早期的時候代碼移植幾乎天天就是在做一堆編譯器特性和新老標準的戰鬥,後來我也學乖了,與其裝一個沒人看的逼,還不如老老實實回歸傳統,至少到現在,這種移植問題是清凈多了.
新標準新特性這種東西,也不知道是我太low還是我書讀的少了,根本不能用來說事,至少目前我是沒有碰到過什麼一定要上新標準才能做出來的邏輯和演算法實現,老標準一樣可以實現的很好,有些地方也許不是很方便,但折中繞一點點小彎幾乎不會出太大問題,當然有些變動較大的老老標準的寫法既不方便可能未來也不會再有支持,但在我從業之年,目前還沒碰到.
但不管C代碼怎麼寫,一個原則是----至少我得保證這一份代碼只要不是需要糾結到大小端機還是是不是同一套浮點標準等一些細枝末節的奇特環境時,在大部分時候,這個代碼是拷貝過去是能直接用的.
我用C寫代碼圖的不就是移植性么,為什麼要引入一些可能不被支持的特性,我追著新標準新特性跑是會分我兩斤大米么,等這個標準完全普及到幾乎所有用得到的編譯器後,我再換不行么?
另外就是開發環境,我就又想不明白了,難道不是怎麼方便怎麼來么,是非得拉插件擼config彰顯自己特立孤行風華絕代,還是非得寫makefile好讓別人覺得自己不那麼low也是個專業碼農了,IDE簡化編譯調試操作,降低入門門檻和學習成本就那麼羞恥?用我用了n年的xx配置的環境寫代碼一樣超級快和一個習慣集成IDE開發的用戶杠出優越感是有意思還是甲方會因為這個多付你幾塊錢?
回答一堆推薦VSC瞧不起VS的,當然VSC我也用,但只是在沒有VS的情況下
IDE寫C最重要的一點,不是支持了什麼新標準新特性,而是能否提供一套完整的,方便的,快速的調試與性能分析方案.
畢竟寫代碼,基本上8成以上的時間,我們都在和debug戰鬥,而這個debug的戰鬥中,指令斷點基本解決了90%的調試內容,但一些真正難找又很常見的比如一些內存越界寫造成的bug和一些性能瓶頸引發的實時性無法達標的問題尤為頭疼,如果一個開發環境無法提供一系列比如內存斷點調用棧跟蹤與性能收集方面的功能,開發效率上絕對大打折扣,這個根本不是玩玩特性語法糖就能解決的.就是需要一套完整的工具鏈,而這個工具鏈的完善程度(包括一系列操作,功能和學習成本上的評估)直接在很大程度上決定了一個項目的開發效率.
VS的那一套調試工具,從內存調試到性能評估,哪不香了,乃至於香到即使是一些硬體平台相關的項目,我都會把一些平台無關的邏輯處理代碼剝離出來單獨用VS調試,又快又好,真的,我現在看到gdb,windbg就噁心,真的,看到命令行我就反胃,我就是那麼low,我就是那種又不想花時間學,又不想花錢,又想快點把問題解決了的白嫖怪.我知道我這麼說肯定又有人跳出來,玩意碰上某某情況怎麼辦,只能用gdb沒有VS,VS調試功能也不如gdb強大,某某情況還是要用gdb.
那隻能說抱歉,你說的問題是你的問題不是我的,對我要做的工作而言,這個不僅方便還完全夠用了,所以為什麼還要去折騰那些有的沒的或者是根本沒辦法直接滿足我功能需求的.我不是VS吹也不是VS的ncf,以後如果某個開發環境我用起來比VS還順手的,我會毫不猶豫另尋新歡(鑒於我本身比較懶,那種看了一天還摸不著頭並打著"用的久了你會發現比vs還好用的旗號"的就算了,老大不小了我人生沒多少時間把一個玩意"用的久")
真要裝逼,我拿一本&&>去圖書館裝作看得懂的樣子那搖頭晃腦,效果不比這個好得多?
你可以用vs2019來弄c語言和cpp。其他人說的一些觀點是不正確的。因為你可以在自己電腦或者遠端配置linux開發環境,用vs2019做編輯器,這樣就不會使用微軟的編譯器了。其他的答案說的vs自己的編譯器對c標準支持的不好是事實,不過你完全可以在vs裡面進行linux的c,cpp遠程開發調試,vs2019本身對這個支持還是比較好的,我就是這麼做的!包括調試。所以別聽他們瞎扯,win10現在自己就帶linux系統,開個ssh就可以了,放心玩耍吧
遠程開發