Visual Studio 2015 的安裝與使用

來源:互聯網
上載者:User

標籤:

為什麼要使用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宏來屏蔽這個警告。

所以第一種方式我們可以修改scanfscanf_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 的安裝與使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.