標籤:
為什麼要使用Visual Studio 2015?
它是中文的、介面友好、自動補全、即時語法錯誤提示(中波浪線部分)、單步調試……最重要的社區版是免費的!所以你不必再昧著良心使用不合法、老舊的不相容當代系統的VC++6.0,Come to VS2015 and enjoy it!
接下來我將告訴你如何安裝以及使用它編寫、運行C/C++程式!
?
獲得Visual Studio 2015
進入Visual Studio 官方網站,點擊"下載Visual Studio社區"。
如果一切正常,你會得到一個大小大約為3MB的應用程式(我假設你知道如何下載,並且知道如何找到下載的檔案):
雙擊它,稍等片刻,來到這個介面:
不用修改安裝目錄,選擇"自訂",點擊"下一步",來到這裡:
只選擇"程式設計語言"下的"Visual C++",點擊下一步,來到這裡:
核對一下,點擊"安裝",看到這個介面後:
就可以點擊"最小化"玩別的了,安裝過程大約要一個小時,期間需要保持網路暢通。
完成了!看到那個巨大的"啟動"了嗎?點!
在VS中建立一個C/C++程式項目
現在,我們就可以開啟VS之旅了!
開啟VS2015,它可能會讓你登入:
這裡可以如果你願意,可以登入,我這裡選擇"以後再說":
這裡的開發設定,我選擇"Visual C++",顏色我選擇了酷炫的"深色"。(根據喜好來就行,不必犯選擇困難症,反正以後也能改)
萬事俱備,"啟動Visual Studio"!
稍等片刻,你就會看到這個介面:
點擊菜單:"檔案"-"建立"-"項目",會出現這個視窗:
選擇左側的"Visual C++"之後,選擇右側的"空項目",項目名稱填寫"MyFristCPromgram",點擊"確定"。(當然項目名你不必像我一樣寫這麼長,隨便打幾個字母也是可以的)
之後,在左側的"方案總管"中,右鍵"標頭檔","添加","建立項"。(如果沒有左側的"方案總管",可以點擊菜單:"視窗"-"重設視窗布局")
在彈出的視窗中,修改新項的名稱為"main.h"(你喜歡的話也可以用"main.c"或"main.cpp"或者隨便起名字)
現在就可以書寫你的代碼了:
讓我們向這個世界問好,寫下這些代碼:
點擊工具列上的那個三角形的綠色按鈕("本地Windows調試器")來運行,或者更快捷的方式是直接按F5。
勾選"不再顯示此對話方塊",點擊"是"。
一閃而過!
"導演,劇本看起來不對啊!"
當你點擊運行按鈕或按F5後,程式一閃而過,怎麼回事,VS2015的BUG?
並不是,我們看看這段程式,這段程式只有一行printf,沒有任何別的語句,電腦瞬間就能執行完,執行完不就結束了嗎,這就是一閃而過的原因。
但是我要看輸出的文字啊,怎麼讓它在printf後停住呢?
很簡單只需要使用 system("pause"); 命令即可,像這樣:
你會發現 system 被畫了紅色的波浪線,將滑鼠移上去發現VS告訴我們這是一個未定義的標識符,因為system所在的庫我們沒有包含,我們加上這行include:
按下F5,現在,你就已經學會如何使用Visual Studio來編寫和運行簡單的C/C++程式了:
補充
如果你不想為使用system("pause");包含一個庫,也可以使用scanf函數來等待輸入,從而暫停程式,或者你可以在最後一個花括弧那行,設定一個斷點,這種方法我們將會在之後詳細講解。
教練,scanf不能用?!
"VS的問題怎麼這麼多!連scanf都不能用還寫C程式?"
等等,請你先冷靜下來,打勾"不再顯示此對話方塊"點擊"否",讓我們仔細看看輸出的這條錯誤資訊:
error C4996: ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
VS告訴我們,這個函數可能不安全,應該考慮使用scanf_s來代替(到底哪裡不安全,有興趣的寶寶可以看本節尾部的選讀小節)。或者定義_CRT_SECURE_NO_WARNINGS宏來屏蔽這個警告。
所以第一種方式我們可以修改scanf為scanf_s,便可以通過編譯
它看上去工作良好!
"不行!我偏要用scanf!我偏要用!偏要用!!"
對於這種強迫症患者,我們可以通過定義_CRT_SECURE_NO_WARNINGS宏來關閉VS的安全警告:
這兩種方法任選其一即可,同時在關閉VS安全警告後,scanf_s仍然是可用的。
不安全的
scanf(選讀)
當使用scanf通過%s讀入字串的時候,很多初學者會忽略使用者輸入的字串長度的問題,導致緩衝區溢位後程式不穩定。觀察下面這個程式:
首先程式開闢了5個字元的空間來接受輸入,但問題是,你並不知道使用者會輸入多少。
讓我們運行起來這個程式,輸入一個明顯大於5個字元的文本,測試一下:
"哈哈!什麼事情都沒有,你根本在嚇唬我!"
別高興的太早,按任意鍵結束這個程式:
VS給我們提出了警告,告訴我們"str"這個變數的堆棧不正常,其實這就是之前我們提到的術語"緩衝區溢位",當我們將長資料放入短位置的時候,多出來的部分就會覆蓋程式的其它資料,有時被覆蓋的東西不重要,程式正常工作,有時重要,程式崩潰,這就叫不安全。
"但是我用VC++6.0的時候可沒出這個錯啊?"
我想是因為VC++6.0太老舊,沒有檢查這種問題的能力。
這種問題還有一個比較隱形發生形式:如果我們正好輸入5個字元呢?比如"Hello"。
事實上仍然會緩衝區溢位,因為字串是以‘/0‘字元結尾,其本身也佔一個位置,所以"Hello"實際上是6個字元!
使用VS自動調整代碼縮排
經常我們從別處粘貼來的代碼縮排不正確,或者很多不拘小節的人寫代碼可能從來不注意縮排,雖然縮排不是C/C++文法的一部分,但是十分影響程式的可讀性。
就比如一個判斷三角形形狀的程式,有的小朋友就能寫成這樣:
別笑,這正是我見過的。這確實對編譯器並沒有什麼障礙,但是如果你要修改這樣的代碼,你得比平常多花起碼三倍精力。就比如我問你,倒數第二個else搭配的是哪個if?你能一眼看出來嗎。
現在我們使用VS的自動格式化代碼的功能,選擇要被格式化的代碼,這來我們選擇全部(Ctrl+A):
按住Ctrl,按一下K,按一下F,神奇嗎?
那麼現在我再問你,倒數第二個else搭配的是哪個if?
?
使用VS的斷點與單步跟蹤功能
經常,為了找出程式的問題點,我們可以在VS中設下斷點並且一步一步跟它著執行,觀察各個變數的變化情況,來找到錯誤的地方。
回到本文之前的那個計算完全平方的程式,右鍵for迴圈的那一行,"斷點"-"插入斷點"。(或者先將游標移動到這一行,然後按F9,再或者直接點擊行首空白處)
在本行的首部將出現一個紅圈,點擊這個紅圈可以取消斷點。
F5運行程式,為scanf_s輸入"10"斷行符號,視窗會自動跳轉至VS,游標自動定位到斷點行。
這時將滑鼠移動到任意一個變數名上,就可以查看這個變數的值。我們移動到i這個變數上:
看到它擁有一個詭異的值。
"不對,啊,我不是給i賦值0了嗎?就在這行!"
是的,但斷點斷下的時刻是這行執行之前,也就是現在的i還沒被定義以及初始化,它的值自然是不確定的。
我們點擊這個圖釘,將固定顯示i的值。
你可以將它拖動到舒適的位置,甚至你還可以手動修改它的值,添加註釋,但這裡我們不需要這樣做。
我們按F10讓程式向前走一步:
立即發現i的值變成了0,並且VS還用紅色顯示給我們,同時游標自動移動到了if語句,左邊的黃色箭頭表面當前程式運行到的位置。再按F10。
因為i滿足開方後仍然是整數的條件,所以進入了if分支,準備輸出這個i。
一路F10,你就可以觀察清楚整個程式i是何時增加,何時輸出。
當你不想再跟蹤的時候,點擊左邊的紅圈取消斷點,按F5,讓程式自己跑便是。
?
2015-10-24
wangzexi
Visual Studio 2015 的安裝與使用