常见编译错误及常用标准库函数.docx

上传人:b****6 文档编号:6567482 上传时间:2023-01-08 格式:DOCX 页数:22 大小:27.43KB
下载 相关 举报
常见编译错误及常用标准库函数.docx_第1页
第1页 / 共22页
常见编译错误及常用标准库函数.docx_第2页
第2页 / 共22页
常见编译错误及常用标准库函数.docx_第3页
第3页 / 共22页
常见编译错误及常用标准库函数.docx_第4页
第4页 / 共22页
常见编译错误及常用标准库函数.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

常见编译错误及常用标准库函数.docx

《常见编译错误及常用标准库函数.docx》由会员分享,可在线阅读,更多相关《常见编译错误及常用标准库函数.docx(22页珍藏版)》请在冰豆网上搜索。

常见编译错误及常用标准库函数.docx

常见编译错误及常用标准库函数

附录A常见编译错误和警告

1.fatalerrorC1010:

unexpectedendoffilewhilelookingforprecompiledheaderdirective。

寻找预编译头文件路径时遇到了不该遇到的文件尾。

(一般是因为误删了包含命令#include"stdafx.h")

2.fatalerrorC1083:

Cannotopenincludefile:

'***.h':

Nosuchfileordirectory

不能打开包含文件'***.h':

没有这样的文件或目录

3.errorC2018:

unknowncharacter'0xa3'

 不认识的字符'0xa3'(一般是代码中出现了汉字或中文标点符号)

4.errorC2039:

'****':

isnotamemberof'####'

'****'不是'####'结构体的一个成员(一般是因为错误引用结构体成员)

5.errorC2057:

expectedconstantexpression

 期望是常量表达式(一般出现在switch语句的case分支中)

6.errorC2061:

syntaxerror:

identifier'***'

语法错误:

标识符’***’(一般是因为未定义形式参数的数据类型)

7.errorC2065:

'****':

undeclaredidentifier

'****':

未声明过的标识符 

8.errorC2082:

redefinitionofformalparameter'****'

 重复定义形式参数'****'

9.errorC2133:

'****':

unknownsize

'****':

不知道其大小(一般是因为数组未定义长度)

10.errorC2143:

syntaxerror:

missing';'before'{'

 句法错误:

'{'前缺少';'

11.errorC2146:

syntaxerror:

missing';'beforeidentifier'****'

 句法错误:

在'****'前缺少';'

12.errorC2181:

illegalelsewithoutmatchingif

非法的else,没有与之匹配的if(一般是因为if与else不配对)

13.errorC2196:

casevalue'****'alreadyused

case值'****'已经使用过(一般出现在switch语句的case分支中)

14.errorC2296:

'%':

illegal,leftoperandhastype'float'

'%':

非法,左操作数应为'float'类型

15.errorC2297:

'%':

illegal,rightoperandhastype'float'

'%':

非法,右操作数应为'float'类型

16.errorC2562:

'****':

'void'functionreturningavalue

'****':

无返回值的函数返回了一个值

17.errorC2660:

'****':

functiondoesnottake2parameters

'****'函数不能传递2个参数

18.errorC2466:

cannotallocateanarrayofconstantsize0

不能分配一个大小为0的数组(一般是因为数组未定义长度)

19.errorC4716:

'****':

mustreturnavalue

'****'函数必须返回一个值(一般是定义返回值的函数体内未写return语句)

20.warningC4035:

'****':

noreturnvalue

 '****'函数没有返回值

21.warningC4244:

'return':

conversionfrom'float'to'int',possiblelossofdata

'return':

从'float'转换为'int',可能丢失数据

22.warningC4553:

'==':

operatorhasnoeffect;didyouintend'='?

 没有效果的运算符“==”;是否改为“=”?

23.warningC4700:

localvariable'****'usedwithouthavingbeeninitialized

 局部变量'****'没有初始化就使用

24.errorC4716:

'****':

mustreturnavalue

'****'函数必须返回一个值

25.LINK:

fatalerrorLNK1168:

cannotopenDebug/P1.exeforwriting

 连接错误:

不能打开P1.exe文件,以改写内容

(一般是因为P1.Exe还在运行,未关闭)

附录B常用标准库函数

一.stdio.h中包括的常用函数

1.fclose关闭文件

原型:

intfclose(FILE*stream);

功能:

关闭由stream指向的流。

清洗保留在流缓冲区内的任何未写的输出。

如果是自动分配,那么就释放缓冲区。

返回:

如果成功,就返回零。

如果检测到错误,就返回EOF。

2.feof检测文件末尾

原型:

intfeof(FILE*stream);

返回:

如果为stream指向的流设置了文件尾指示器,则返回非零值;否则返回零。

3.ferror检测文件错误

原型:

intferror(FILE*stream);

返回:

如果为stream指向的流设置了文件错误指示器,则返回非零值;否则返回零。

4.fflush清洗文件缓冲区

原型:

intfflush(FILE*stream);

功能:

把任何未写入的数据写到和stream相关的缓冲区中,其中stream指向用于输出或更新的已打开的流。

如果stream是空指针,那么fflush函数清洗存储在缓冲区中的所有未写入的流。

返回:

如果成功就返回零。

如果检测到错误,就返回EOF。

5.fgetc从文件中读取字符

原型:

intfgetc(FILE*stream);

功能:

从stream指向的流中读取字符。

返回:

读到的字符。

如果fgetc函数遇到流的末尾,则设置流的文件尾指示器并且返回EOF。

如果读取发生错误,fgetc函数设置流的错误指示器并且返回EOF。

6.fgetpos获得文件位置

原型:

intfgetpos(FILE*stream,fpos_t*pos);

功能:

把stream指向的流的当前位置存储到pos指向的对象中。

返回:

如果成功就返回零。

如果调用失败,则返回非零值,并且把由实现定义的错误码存储到errno中。

7.fgets从文件中读取字符串

原型:

char*fgets(char*s,intn,FILE*stream);

功能:

从stream指向的流中读取字符,并且把读入的字符存储到s指向的数组中。

遇到第一个换行符已经读取了n-1个字符,或到了文件末尾时,读取操作都会停止。

fgets函数会在字符串后添加一个空字符。

返回:

s(指向数组的指针),如果读取操作错误或fgets函数在存储任何字符之前遇到了流的末尾,都会返回空指针。

8.fopen打开文件

原型:

FILE*fopen(constchar*filename,constchar*mode);

功能:

打开文件以及和它相关的流,文件名是由filename指向的。

mode说明文件打开的方式。

返回:

文件指针。

在执行下一次关于文件的操作时会用到此指针。

如果无法打开文件则返回空指针。

9.fprintf格式化写文件

原型:

intfprintf(FILE*stream,constchar*format,...);

功能:

向stream指向的流写输出。

format指向的字符串说明了后续参数显示的格式。

返回:

写入的字符数量。

如果发生错误就返回负值。

10.fputc向文件写字符

原型:

intfputc(intc,FILE*stream);

功能:

把字符c写到stream指向的流中。

返回:

c(写入的字符),如果写发生错误,fputc函数会为stream设置错误指示器,并且返回EOF。

11.fputs向文件写字符串

原型:

intfputs(constchar*s,FILE*stream);

功能:

把s指向的字符串写到stream指向的流中。

返回:

如果成功,返回非负值。

如果写发生错误,则返回EOF。

12.fread从文件读块

原型:

size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);

功能:

试着从stream指向的流中读取nmemb个元素,每个元素大小为size个字节,并且把读入的元素存储到ptr指向的数组中。

返回:

实际读入的元素(不是字符)数量。

如果fread遇到文件末尾或检测到读取错误,那么此数将会小于nmemb。

如果nmemb或size为零,则返回值为零。

13.freopen重新打开文件

原型:

FILE*freopen(constchar*filename,constchar*mode,FILE*stream);

功能:

在freopen函数关闭和stream相关的文件后,打开名为filename且与stream相关的文件。

Mode参数具有和fopen函数调用中相同的含义。

返回:

如果操作成功,返回stream的值。

如果无法打开文件则返回空指针。

14.fscanf格式化读文件

原型:

intfscanf(FILE*stream,constchar*format,...);

功能:

向stream指向的流读入任意数量的数据项。

format指向的字符串说明了读入项的格式。

跟在format后边的参数指向数据项存储的位置。

返回:

成功读入并且存储的数据项数量。

如果发生错误或在可以读数据项前到达了文件末尾,那么就返回EOF。

15.fseek文件查找

原型:

intfseek(FILE*stream,longintoffset,intwhence);

功能:

为stream指向的流改变文件位置指示器。

如果whence是SEEK_SET,那么新位置是在文件开始处加上offset个字节。

如果whence是SEEK_CUR,那么新位置是在当前位置加上offset个字节。

如果whence是SEEK_END,那么新位置是在文件末尾加上offset个字节。

对于文本流而言,offset必须是零,或者whence必须是SEEK_SET并且offset的值是由前一次的ftell函数调用获得的。

而对于二进制流来说,fseek函数不可以支持whence是SEEK_END的调用。

返回:

如果操作成功就返回零。

否则返回非零值。

16.fsetpos设置文件位置

原型:

intfsetpos(FILE*stream,constfpos_t*pos);

功能:

根据pos(前一次fgetpos函数调用获得的)指向的值来为stream指向的流设置文件位置指示器。

返回:

如果成功就返回零。

如果调用失败,返回非零值,并且把由实现定义的错误码存储在errno中。

17.ftell确定文件位置

原型:

longintftell(FILE*stream);

返回:

返回stream指向的流的当前文件位置指示器。

如果调用失败,返回-1L,并且把由实现定义的错误码存储在errno中。

18.fwrite向文件写块

原型:

size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream);

功能:

从ptr指向的数组中写nmemb个元素到stream指向的流中,且每个元素大小为size个字节。

返回:

实际写入的元素(不是字符)的数量。

如果fwrite函数检测到写错误,则这个数将会小于nmemb。

19.getchar读入字符

原型:

intgetchar(void);

功能:

从stdin流中读入一个字符。

注意:

getchar函数通常是作为宏来实现的。

返回:

读入的字符。

如果读取发生错误,则返回EOF。

20.gets读入字符串

原型:

char*gets(char*s);

功能:

从stdin流中读入多个字符,并把这些读入的字符存储到s指向的数组中。

返回:

s(即存储输入的数组的指针)。

如果读取发生错误或gets函数在存储任何字符之前遇到流的末尾,那么返回空指针。

21.printf格式化写

原型:

intprintf(constchar*format,...);

功能:

向stdout流写输出。

format指向的字符串说明了后续参数显示的格式。

返回:

写入数据的数量。

如果发生错误就返回负值。

22.putchar写字符

原型:

intputchar(intc);

功能:

把字符c写到stdout流中。

注意:

putchar函数通常作为宏来实现的。

返回:

c(写入的字符)。

如果写发生错误,putchar函数设置流的错误指示器,并且返回EOF。

23.puts写字符串

原型:

intputs(constchar*s);

功能:

把s指向的字符串写到strout流中,然后写一个换行符。

返回:

如果成功返回非负值。

如果写发生错误则返回EOF。

24.remove移除文件

原型:

intremove(constchar*filename);

功能:

删除文件,此文件名由filename指向。

返回:

如果成功就返回零;否则返回非零值。

25.rename重命名文件

原型:

intrename(constchar*old,constchar*new);

功能:

改变文件的名字。

old和new指向的字符串分别包含旧文件名和新文件名。

返回:

如果改名成功就返回零。

如果操作失败,就返回非零值(可能因为旧文件目前是打开的)。

26.rewind返回到文件头

原型:

voidrewind(FILE*stream);

功能:

为stream指向的流设置文件位置指示器到文件的开始处。

为流清除错误指示器和文件尾指示器。

27.scanf格式化读

原型:

intscanf(constchar*format,...);

功能:

从stdin流读取任意数量数据项。

format指向的字符串说明了读入项的格式。

跟随在format后边的参数指向数据项要存储的地方。

返回:

成功读入并且存储的数据项数量。

如果发生错误或在可以读入任意数据项之前到达了文件末尾,就返回EOF。

28.sprintf格式串写

原型:

intsprintf(char*s,constchar*format,...);

功能:

与fprintf函数和printf函数很类似,但是sprintf函数不是把字符写入流,而是把字符存储到s指向的数组中。

format指向的字符串说明了后续参数显示的格式,在输出的末尾存储一个空字符到数组中。

返回:

存储到数组中的字符数量,不计空字符。

29.sscanf格式串读

原型:

intsscanf(constchar*s,constchar*format,...);

功能:

与fscanf函数和scanf函数很类似,但是sprintf函数不是从流读取字符,而是从s指向的字符串中读取字符。

format指向的字符串说明了读入项的格式。

跟随在format后的参数指向数据项要存储的地方。

返回:

成功读入并且存储的数据项数量。

如果在可以读入任意数据项之前到达了字符串末尾,就返回EOF。

30.tmpfile创建临时文件

原型:

FILE*tmpfile(void);

功能:

创建临时文件,此文件在被关闭或者程序结束时会被自动删除。

按照"wb+"模式打开文件。

返回:

文件指针。

当执行对此文件的后续操作时候用到此指针。

如果无法创建文件,则返回空

31.tmpnam产生临时文件名

原型:

char*tmpnam(char*s);

功能:

产生临时文件名。

如果s是空指针,那么tmpnam把文件名存储在静态变量中。

否则,它会把文件名复制到s指向的字符数组中。

(数组必须足够长可以存储L_tmpnam个字符,这里的L_tmpnam是在头文件中定义的宏。

返回:

指向文件名的指针。

32.ungetc未读取的字符

原型:

intungetc(intc,FILE*stream);

功能:

把字符c回退到stream指向的流中,并且清除流的文件尾指示器。

由连续的ungetc函数调用回退的字符数量有变化。

只能保证第一次调用成功。

调用文件定位函数(fseek函数、fsetpos函数或者rewind函数)会导致回退的字符丢失。

返回:

c(回退的字符)。

如果没有读取操作或者文件定位操作就试图回退过多的字符,那么函数将会返回EOF。

二.math.h中包括的常用函数

1.abs整数的绝对值

原型:

intabs(intj);

返回:

整数j的绝对值。

2.acos反余弦

原型:

doubleacos(doublex);

返回:

x的反余弦值。

返回值的范围在0到π之间。

如果x的值不在−1到+1之间,那么就会发生定义域错误。

3.asin反正弦

原型:

doubleasin(doublex);

返回:

x的反正弦值。

返回值的范围在-π/2到π/2之间。

如果x的值不在-1到+1之间,那么就会发生定义域错误。

4.atan反正切

原型:

doubleatan(doublex);

返回:

x的反正切值。

返回值的范围在−π/2到π/2之间。

5.atan2商的反正切

原型:

doubleatan2(doubley,doublex);

返回:

y/x的反正切值。

返回值的范围在−π到π之间。

如果x和y的值都为零,那么就会发生定义域错误。

6.ceil上整数

原型:

doubleceil(doublex);

返回:

大于或等于x的最小整数。

7.cos余弦

原型:

doublecos(doublex);

返回:

x的余弦值(按照弧度衡量的)。

8.cosh双曲余弦

原型:

doublecosh(doublex);

返回:

x的双曲余弦值。

如果x的数过大,那么可能会发生取值范围错误。

9.exp指数

原型:

doubleexp(doublex);

返回:

e的x次幂的值(即ex)。

如果x的数过大,那么可能会发生取值范围错误。

10.fabs浮点数的绝对值

原型:

doublefabs(doublex);

返回:

x的绝对值。

11.floor向下取整

原型:

doublefloor(doublex);

返回:

小于或等于x的最大整数。

12.fmod浮点模数

原型:

doublefmod(doublex,doubley);

返回:

x除以y的余数。

如果y为零,是发生定义域错误还是fmod函数返回零是由实现定义的。

13.frexp分解成小数和指数

原型:

doublefrexp(doublevalue,int*exp);

功能:

按照下列形式把value分解成小数部分f和指数部分n:

value=f×2n

其中f是规范化的,因此0.5≤f<1或者f=0。

把n存储在exp指向的整数中。

返回:

f,即value的小数部分。

14.labs长整数的绝对值

原型:

longintlabs(longintj);

返回:

j的绝对值。

如果不能表示j的绝对值,那么函数的行为是未定义的。

15.ldexp联合小数和指数

原型:

doubleldexp(doublex,intexp);

返回:

x×2exp的值。

可能会发生取值范围错误。

16.log自然对数

原型:

doublelog(doublex);

返回:

基数为e的x的对数(即1nx)。

如果x是负数,会发生定义域错误;如果x是零,则会发生取值范围错误。

17.long10常用对数

原型:

doublelog10(doublex);

返回:

基数为10的x的对数。

如果x是负数,会发生定义域错误;如果x是零,则会发生取值范围错误。

18.modf分解成整数和小数部分

原型:

doublemodf(doublevalue,double*iptr);

功能:

把value分解成整数部分和小数部分。

把整数部分存储到iptr指向的double型对象中。

返回:

value的小数部分。

19.pow幂

原型:

doublepow(doublex,doubley);

返回:

x的y次幂。

发生定义域错误的情况有:

(1)当x是负数并且y的值不是整数时;

(2)当x为零且y是小于或等于零,无法表示结果时。

取值范围错误也是可能发生的。

20.sin正弦

原型:

doublesin(doublex);

返回:

x的正弦值(按照弧度衡量的)。

21.sinh双曲正弦

原型:

doublesinh(doublex);

返回:

x的双曲正弦值(按照弧度衡量的)。

如果x的数过大,那么可能会发生取值范围错误。

22.sqrt平方根

原型:

doublesqrt(doublex);

返回:

x的平方根。

如果x是负数,则会发生定义域错误。

23.tan正切

原型:

doubletan(doublex);

返回:

x的正切值(按照弧度衡量的)。

24.tanh双曲正切

原型:

doubletanh(doublex);

返回:

x的双曲正切值。

三.stdlib.h中包括的常用函数

1.atexit在程序退出处注册要调用的函数

原型:

intatexit(void(*func)(void));

功能:

注册由func指向的函数作为终止函数。

如果程序正常终止(通过return或exit,而不是abort),那么将调用函数。

可以重复调用atexit函数来注册多个终止函数。

最后一个注册的函数将是在终止前第一个被调用的函数。

返回:

如果成功,返回零。

如果不成功,则返回非零(达到由实现定义的限制)。

2.atof把字符串转换成浮点数

原型:

doubleatof(constchar*nptr);

返回:

对应字符串最长初始部分的double型值,此字符串是由nptr指向的,且字符串最长初始部分具有浮点数的格式。

如果无法表示此数,则函数的行为将是未定义的。

3.atoi把字符串转换成整数

原型:

intatoi(constchar*nptr);

返回:

对应字符串最

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1