https://www.cnblogs.com/wangzexi/p/4906640.html
為什么要使用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.cpp"。(圖中誤為".h"后綴,可能導致編譯錯誤)
現在就可以書寫你的代碼了:
讓我們向這個世界問好:
點擊工具欄上的那個三角形的綠色按鈕("本地Windows調試器")來運行,或者更快捷的方式是直接按F5。
勾選"不再顯示此對話框",點擊"是"。
一閃而過!
"???!"
當你點擊運行按鈕或按F5后,程序一閃而過,怎么回事,VS2015的BUG?
並不是,我們看看這段程序,這段程序只有一行printf,沒有任何別的語句,計算機瞬間就能執行完,執行完不就結束了嗎,這就是一閃而過的原因。
但是我要看輸出的文字啊,怎么讓它在printf后停住呢?
很簡單只需要使用 system("pause"); 命令即可,像這樣:
你會發現 system 被畫了紅色的波浪線,將鼠標移上去發現VS告訴我們這是一個未定義的標識符,因為system所在的庫我們沒有包含,我們加上這行include:
按下F5,現在,你就已經學會如何使用Visual Studio來編寫和運行簡單的C/C++程序了:
補充
如果你不想為使用system("pause");包含一個庫,也可以使用scanf函數來等待輸入,從而暫停程序,或者你可以在最后一個花括號那行,設置一個斷點,這種方法我們將會在之后詳細講解。
scanf不能用?!
"VS的問題怎么這么多!連scanf都不能用?"
等等,請你先冷靜下來。
點擊"否"關閉這個信息框,讓我們仔細看看輸出的這條錯誤信息:
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個字符!
自動調整代碼縮進
我們經常會獲得一些縮進糟糕的代碼,雖然縮進不是C/C++語法的一部分,但是十分影響程序的可讀性。
比如,一個判斷三角形形狀的程序:
編譯通過,執行正確。但讀起來很難受。
我就來考考你,倒數第二個else搭配的是哪個if?你能輕易看出來嗎。
如何格整理這些代碼呢,選擇全部代碼(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,讓程序自己跑便是。