Visual Studio 中的一些小細節
(如有新發現,會持續補充)
文章目錄
- 一.部分函式不安全而報錯
- 二.控制臺一閃而過
一.部分函式不安全而報錯
相信用過VS編譯器的同學們都會有過這樣的情況:當你使用scanf、strcpy、strcat、sscanf等函式時,編譯器會提示錯誤資訊,
以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、strcpy_s等等
但是我們在撰寫C語言程式的時候,為了保障代碼的通用性,一般不會采用VS編譯器提供的函式
解決方法如下:
1. 手動預定義
我們可以根據提示,在代碼前使用#define來預定義
#define _CRT_SECURE_NO_WARNINGS 1
其實,這行代碼最后的數字“1”,是可以省略的
2.檔案屬性預定義
在資源管理器中找到當前代碼所在的專案 → 滑鼠右鍵 → 屬性
打開屬性頁后,C/C++ → 前處理器 → 前處理器定義
然后添加一下代碼即可
_CRT_SECURE_NO_WARNINGS


3.系統檔案預定義
以上兩種方法雖然都能夠解決問題,但都不夠方便,每一次新建一個專案都需要操作一次,
而想要“一勞永逸”,則可以使用一下方法,
在VS的安裝檔案中,通過檔案搜索,找到一個名為“newc++file.cpp”的檔案,然后將其拖到系統桌面
滑鼠右鍵點擊,對其進行編輯,
我們只需添加一下代碼即可,
#define _CRT_SECURE_NO_WARNINGS 1
注意:此處的數字“1”依舊可以省略,
通過方法③的操作,以后我們每次使用VS編譯器新建源檔案的時候,該檔案都會默認在第一行中添加了預定義的代碼,

二.控制臺一閃而過
在VS2019編譯器中,并不會出現控制臺一閃而過的現象,但是在版本比較早的VS編譯器中,則可能會
出現控制臺一閃而過的現象,
解決方法如下:
1.代碼方法
我們可以使用getchar()函式使控制臺暫停下來,此時只要我們在鍵盤上輸入任意字符,getchar()
函式便會讀取該字符,從而完成呼叫使控制臺消失,
當然,如果該程式前面有輸入陳述句,則需要使用兩次getchar()函式才可以哦
因為第一句getchar()是用于讀取上次輸入時的 ’\0‘
第二句getchar()才使我們的控制臺暫停,等待我們輸入任意字符
2.屬性配置
我們在解決方案資源管理器中,找到該源檔案所在的專案 → 滑鼠右鍵 → 屬性
打開屬性頁后,點擊聯結器 → 系統 → 子系統 → 選中控制臺

這樣,問題就解決啦!
創作不易,希望大家可以點贊、評論、轉發、關注一條龍哦!
你們的支持是我創作最大的動力!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/300521.html
標籤:其他
