這個(gè)是警告,可以不理,意思是func的返回類型有問題吧,應(yīng)該是函數(shù)定義了void,但在函數(shù)里寫了,return 0;,把代碼貼出來看看。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比臨江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式臨江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臨江地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
一般都是在處理文件時(shí)用到的比較多,如:
#include?stdio.h
#include?stdlib.h
int?main(void)
{
perror("File?error?");
}
#include?stdio.h
#include?stdlib.h
int?main(void){
FILE?*fp;
if((fp=fopen("test",?"rb"))==NULL)?{
printf("Cannot?open?file.\n");
exit(1);
}
putc('C',?fp);
if(ferror(fp))?{?//?檢測文件是否出錯(cuò)
printf("File?Error\n");
exit(1);
}
fclose(fp);
return?0;
}
errno會(huì)返回一個(gè)數(shù)字,每個(gè)數(shù)字代表一個(gè)錯(cuò)誤類型。詳細(xì)的可以查看頭文件。/usr/include/asm/errno.h
如何把errno的數(shù)字轉(zhuǎn)換成相應(yīng)的文字說明?
方式一:可以使用strerrno函數(shù)
char
*strerror(int
errno)
使用方式如下:
fprintf(stderr,"error
in
CreateProcess
%s,
Process
ID
%d
",strerror(errno),processID)
將錯(cuò)誤代碼轉(zhuǎn)換為字符串錯(cuò)誤信息,可以將該字符串和其它的信息組合輸出到用戶界面。
注:假設(shè)processID是一個(gè)已經(jīng)獲取了的整形ID
方式二:使用perror函數(shù)
void
perror(const
char
*s)
函數(shù)說明
perror
(
)用來將上一個(gè)函數(shù)發(fā)生錯(cuò)誤的原因輸出到標(biāo)準(zhǔn)錯(cuò)誤(stderr),參數(shù)s
所指的字符串會(huì)先打印出,后面再加上錯(cuò)誤原因
字符串。此錯(cuò)誤原因依照全局變量
errno
的值來決定要輸出的字符串。
另外并不是所有的c函數(shù)調(diào)用發(fā)生的錯(cuò)誤信息都會(huì)修改errno。例如gethostbyname函數(shù)。
errno是否是線程安全的?
errno是支持線程安全的,而且,一般而言,編譯器會(huì)自動(dòng)保證errno的安全性。
我們看下相關(guān)頭文件
/usr/include/bits/errno.h
會(huì)看到如下內(nèi)容:
#
if
!defined
_LIBC
||
defined
_LIBC_REENTRANT
/*
When
using
threads,
errno
is
a
per-thread
value.
*/
#
define
errno
(*__errno_location
())
#
endif
#
endif
/*
!__ASSEMBLER__
*/
#endif
/*
_ERRNO_H
*/
也就是說,在沒有定義__LIBC或者定義_LIBC_REENTRANT的時(shí)候,errno是多線程/進(jìn)程安全的。
為了檢測一下你編譯器是否定義上述變量,不妨使用下面一個(gè)簡單程序。
#include
stdio.h
#include
errno.h
int
main(
void
)
{
#ifndef
__ASSEMBLER__
printf(
"Undefine
__ASSEMBLER__/n"
);
#else
printf(
"define
__ASSEMBLER__/n"
);
#endif
#ifndef
__LIBC
printf(
"Undefine
__LIBC/n"
);
#else
printf(
"define
__LIBC/n"
);
#endif
#ifndef
_LIBC_REENTRANT
printf(
"Undefine
_LIBC_REENTRANT/n"
);
#else
printf(
"define
_LIBC_REENTRANT/n"
);
#endif
return
0;
}
inquire,judgeNum,judgeName這三個(gè)函數(shù)定義有問題。
最好把ATP.CPP的205行附近的代碼貼出來,看到代碼才知道是什么錯(cuò)誤。
ave=0;放到double box[10];的后面。
C語言要求變量在函數(shù)開始的地方全部聲明好。
分享題目:c語言有error函數(shù)嗎 c語言錯(cuò)誤處理函數(shù)
文章鏈接:http://chinadenli.net/article34/dodcese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃、動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)