當前位置:首頁 » 編程軟體 » 編譯器警告

編譯器警告

發布時間: 2022-01-16 00:40:40

㈠ 用VS編譯C 出現一個警告 什麼意思啊

警告 2 warning C4013: 「getch」未定義;假設外部返回 int d:\文件類\c語言\c 語言項目\c\c\2.c 12 C源代碼是# include <stdio.h
void main(){int a[10];int i;for(i=0;i<10;i++){scanf("%d",&a[i]);}a[5]=a[5]+5;
printf("%d",a[5]);getch();}回答:很多涉及字元串的函數是不檢查越界的, 不安全。 所以後來有一套新的安全函數替代這個, 第一個warning就是建議你用 scanf_s代替scanf 第二個 warning是說你用的 getch()沒定義, 所以編譯器假定它是 int getch(void)。 用的函數最好先 include好頭文件
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS
已經是安全主導的年代了,這些老舊的東西微軟提供了一些新函式來取代,很簡單他在後面加了_s ,例如gets == gets_s ,strcpy == strcpy_s原因解釋這種微軟的警告,主要因為那些C庫的函數,很多函數內部是不進行參數檢測的(包括越界類的),微軟擔心使用這些會造成內存異常,所以就改寫了同樣功能的函數,改寫了的函數進行了參數的檢測,使用這些新的函數會更安全和便捷。關於這些改寫的函數你不用專門去記憶,因為編譯器對於每個函數在給出警告時,都會告訴你相應的安全函數,查看警告信息就可以獲知,在使用時也再查看一下MSDN詳細了解。庫函數改寫例子:
mkdir改寫為 _mkdir
fopen」改寫為 fopen_s
stricmp改寫為 stricmp_s
strcpy改寫為strcpy_s解決方案:1 根據下面的warning提示:參見「fopen」的聲明
消息:「This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.」
所以可以將函數按warning提示的第二句,改為使用fopen_s函數即可:
例如:FILE *pFile=fopen("1.txt", "w");改為:FILE* pFile;
fopen_s(&pFile, "1.txt", "w");
2 還是根據warning提示的地三句話:use _CRT_SECURE_NO_DEPRECATE
項目|屬性|配置屬性|C/C++|命令行|附加選項,加入【/D "_CRT_SECURE_NO_DEPRECATE" 】(註:加入中括弧中完整的內容)
3 降低警告級別:項目|屬性|配置屬性|C/C++|常規,自己根據情況降低警告級別(此法不推薦)
注意:高度重視警告:使用編譯器的最高警告級別。應該要求構建是干凈利落的(沒有警告)。理解所有警告。通過 修改代碼而不是降低警告級別來排除警告。
編譯器是你的朋友。如果它對某個構造發出警告,這經常是說明你的代碼中存在潛在的問題。成功的構建應該是無聲無息的(沒有警告的)。【《

㈡ 這里C++編譯器的警告信息指什麼

bool類型和char類型不能用不等號做比較,不是類型安全的。建議轉化成統一類型。

㈢ 怎樣消除編譯器關於 C++11 的警告

可以修改代碼,或者修改警告級別。甚至可以過濾某種類型的警告。仔細去研究研究吧

㈣ 請問這個C++代碼編譯時的是警告是什麼意思

"zhangwei"在程序中的類型是const char const *,也就是字元串常量,是不能改變值的,然而你用char * a去指向它,於是我們就可以通過a來改變a所指向的字元串,如果在a指向"zhangwei"的時候嘗試改變a[0]之類的值,就自然會報錯,所以編譯器提出警告

㈤ 這里C++編譯器的警告信息指什麼

'!=' : unsafe operation -- 不安全的運算。
no value of type 'bool' -- 得不出bool值。(得不出真假)。
'const char' 與給定的常數值無法比較。

㈥ 誰能給我提供C++編譯器錯誤與警告詳解

呵呵 你用有中文出錯提示的編繹器就好啦

c-free不錯 我用過

它支持多編譯器,可以配置添加其他編譯器;
目前支持的編譯器類型:
(1) MingGW 2.95/3.x/4.x/5.0
(2) Cygwin
(3) Borland C++ Compiler
(4) Microsoft C++ Compiler

很方便的

以下是下載地址:
http://www.crsky.com/soft/8277.html

㈦ 這里C++編譯器的警告信息指什麼

編譯器警告(等級 1)C4806

「operation」: 不安全操作: 從類型「type」提升到類型「type」的值不能等於給定的常數
此消息對代碼 b == 3 的情況發出警告,其中 b 為 bool 類型。提升規則使 bool 被提升為 int。這是合法的,但永遠不能為 true。下面的示例生成 C4806:
// C4806.cpp
// compile with: /W1
int main()
{
bool b = true;
// try..
// int b = true;

if (b == 3) // C4806
{
b = false;
}
}

㈧ 如何設置編譯器的告警級別

工程->設置->c/c++ 選項頁上面有警告等級設定。

㈨ 在C++中,編譯器的警告消息可以忽略嗎

編譯器
的警告要認真對待,應該盡量編寫沒有警告的代碼,除非你確切的知道編譯器為什麼產生警告,以及後果

㈩ C語言編譯警告

void
main(void);函數被定義多次,這么明顯的錯誤肯定是其他.c文件定義了main函數了
另外你的這種寫法完全不符合c99啊
void
main(void)
應該寫成
int
main(void);或者
int
main(char
*argc,char*
argv[])

熱點內容
電腦加裝固態後需要怎麼配置 發布:2024-12-23 14:20:21 瀏覽:508
如何在伺服器上進行序列比對 發布:2024-12-23 14:15:25 瀏覽:284
ga6選哪個配置車 發布:2024-12-23 14:13:36 瀏覽:274
鴻蒙為什麼比安卓占內存 發布:2024-12-23 14:06:13 瀏覽:180
sql兩表更新 發布:2024-12-23 14:01:29 瀏覽:207
linux驅動spi 發布:2024-12-23 13:25:22 瀏覽:115
王思聰為什麼配伺服器 發布:2024-12-23 13:19:48 瀏覽:374
安卓型號代表什麼 發布:2024-12-23 13:13:29 瀏覽:780
改密碼哪裡加問題 發布:2024-12-23 13:11:43 瀏覽:865
安卓手機多開哪個不卡 發布:2024-12-23 13:10:16 瀏覽:589