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

編譯警告

發布時間: 2022-01-07 23:50:44

㈠ 用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語言: 這樣的編譯警告

在函數a中返回的sth void 不是void* 而你在函數中又試圖以void*的方式去使用它,所以要對你作出提醒。

㈢ C語言編譯警告,求解

你是在unix下吧,unix下建立的文件末尾都有一個空行,所以編譯器也要求正常的文件有一個空行作為末尾。加工空行就行了

㈣ c語言,編譯出現警告了

1)警告的原因是編譯時,編譯器認為p變數沒有賦初值;
2)其實程序中已經在if else 中對p的初始值進行了處理,但編譯器比較「笨」沒有看出來
3)你可以完全不理會這個警告;
4)如果確實你不想讓編譯器出這樣的警告,在scanf語句前,加上 p = 0 , 顯式地為p賦初值

㈤ 51編程編譯警告,,該怎麼處理

有些軟體是經過了壓縮和加殼的,所以反編譯之前如果沒用脫殼處理的話可能會出現這種情況,反編之前最好是先用fileinfo之類的軟體查看一下這個軟體是否加過殼。

㈥ 編譯時出現警告,怎麼回事

如上圖所示, 我用Qt5.5 新建的一個項目, 在運行時下面出現警告 ppsjy:[MyHookProc]__read web cfg: success ----- :
PS: 我是在安裝了Qt5.9後出現的這個問題, 之後把Qt5.9和Qt5.5都御載了再安裝Qt5.5 可這個警告還在, 怎麼回事?

你卸載的時候,可能有QT記錄殘留,所以警告還在吧。一般QT的運行配置保存在:C:Users用戶AppDataRoamingQtProject 和 C:Users用戶AppDataLocalQtProject,你可以嘗試把這個文件夾一起刪了試試!

使用vs版本試試

㈦ c 編譯的時候出現這個警告

int node[12][2]
所以系統默認node應該是賦值給一個指向數組長度為2的指針。
也就是說
你應該讓它賦值給它默認的才不會有警告,而你程序中
是賦值給一個指向一個數字的指針,也就是長度為1.
void creategraph(int *node,int num)
所以,才會產生警告。
下面我改了下你的程序,也可以輸出結果,但是沒有警告了。
#include <stdio.h>
typedef int intarray[2];
int matrix[6][6];
/*創建圖 */
void creategraph(int *node,int num)
{
int from; /*邊的起點*/
int to; /*邊的終點*/
int i;

for(i=0;i<num;i++)
{
from=node[i*2];
to=node[i*2+1];
matrix[from][to]=1;
}
}
void creategraph1(intarray *node,int num)
{
int from; /*邊的起點*/
int to; /*邊的終點*/
int i;

for(i=0;i<num;i++)
{
from=*(*(node+i)+0);
to=*(*(node+i)+1);
matrix[from][to]=1;
}
}
/*主程序:創建圖後,將鄰接矩陣輸出*/
void main()
{
int node[12][2]={ {1,2},{2,1},
{1,3},{3,1},
{2,3},{3,2},
{2,4},{4,2},
{3,5},{5,3},
{4,5},{5,4}};
int i,j;
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
matrix[i][j]=0;

creategraph1(node,12);
printf("graph is:\n");
for(i=1;i<=5;i++)
{for(j=1;j<=5;j++)
printf("%d ",matrix[i][j]);
printf("\n");}
getch();
}
如上,creategraph1()函數我新寫的,可以實現你說的,但是不會產生警告。
其實這種多維數組的傳遞,確實很考指針,我空間中寫過這方面的
http://hi..com/huifeng00/blog/item/83a3c19bdcbf83026f068c37.html
你有時間可以看下,應該算詳細吧,不明白hi我。

java程序可以編譯 但是會有警告 為什麼呢

告警是編譯時檢查發現不符合一些常用約定,但是不妨礙執行。

ThestaticfieldText3.ishouldbeaccessedinastaticway

以下是修改過的代碼。

publicclassText3{
staticinti=47;//靜態方法共用內存
publicvoidcall(){
System.out.println("調用call方法");
for(i=0;i<3;i++){
System.out.print(i+"");
if(i==2){
System.out.println();
}
}
}

publicstaticintgetI(){
returni;
}

publicstaticvoidsetI(inti){
Text3.i=i;
}

publicText3(){

}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Text3t1=newText3();
Text3t2=newText3();
Text3.setI(60);//這里有警告
Text3.i++;
System.out.println("第一個實例對象調用變數i的結果為i="+Text3.getI());//這里有警告
t1.call();//調用call方法後,i的值變成了3
Text3.i++;
System.out.println("第二個實例對象調用變數i的結果為i="+Text3.getI());//這里有警告
t2.call();
}
}

㈨ C語言編譯警告問題

你那個數組賦值有問題。

㈩ C語言編譯警告

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

熱點內容
裝緩存下載 發布:2024-09-20 05:42:36 瀏覽:72
gon引擎自動回收腳本 發布:2024-09-20 05:39:39 瀏覽:246
好醫生連鎖店密碼多少 發布:2024-09-20 05:09:38 瀏覽:15
魔獸腳本代理 發布:2024-09-20 05:09:35 瀏覽:99
python登陸網頁 發布:2024-09-20 05:08:39 瀏覽:758
安卓qq飛車如何轉蘋果 發布:2024-09-20 04:54:30 瀏覽:178
存儲過程中in什麼意思 發布:2024-09-20 04:24:20 瀏覽:315
php顯示數據 發布:2024-09-20 03:48:38 瀏覽:501
源碼安裝軟體 發布:2024-09-20 03:44:31 瀏覽:354
入門編程游戲的書 發布:2024-09-20 03:31:26 瀏覽:236