首页 理论教育 C++STL精解:头文件cstdlib和cstddef简介

C++STL精解:头文件cstdlib和cstddef简介

时间:2023-10-25 理论教育 版权反馈
【摘要】:头文件<cstddef>和<cstdlib>和其原有的C版本对应,但在C++程序中也经常用到。NULL同时定义于头文件<cstdio>、<cstdlib>、<cstring>、<ctime>、<cwchar>和<clocale>内。ptrdiff_t是一种带有正负号的型别,用于表示指针之间的距离。offsetof表示一个成员在结构体或联合体中的偏移量。

C++STL精解:头文件cstdlib和cstddef简介

头文件<cstddef>和<cstdlib>和其原有的C版本对应,但在C++程序中也经常用到。其在C语言中的对应头文件分别为<stddef.h>和<stdlib.h>。

1.<stddef>中的定义

头文件<stddef>的定义项主要包括NULL、size_t、ptrdiff_t和offsetof。NULL通常用于表明一个不指向任何对象的指针,其实就是0。C语言中的NULL通常定义为(void∗)0。在C++中,NULL的型别必须是整数型别,否则无法将NULL赋值给指针。而且在C++中没有定义从void∗到任何其他型别的自动转换。NULL同时定义于头文件<cstdio>、<cstdlib>、<cstring>、<ctime>、<cwchar>和<clocale>内。

•size_t是一种无正负号的型别,用于表示大小(例如元素个数)。

•ptrdiff_t是一种带有正负号的型别,用于表示指针之间的距离。

•offsetof表示一个成员在结构体(Struct)或联合体(Union)中的偏移量。(www.xing528.com)

2.<cstdlib>中的定义

头文件<cstdlib>中包含了最重要的一些定义,主要包括exit()、EXIT_SUCCESS、EX-IT_FAILURE、abort()和atexit(void(∗function)())。常数EXIT_SUCCESS和EXIT_FAIL-URE均用于exit()函数的参数,也可以用于main()的返回值

经由atexit()设定的函数,在程序正常退出时会依据设定的相反次序被一一调用起来。无论是通过exit()还是main()退出,均不传递任何参数。

exit()函数和abort()可用于在任意点终止程序的运行,无需返回main()。exit()函数会销毁所有的static对象,并将所有缓冲区清空(flush)。关闭所有I/O通道,之后终止程序。如果atexit()函数设定的函数抛出异常,会调用terminate()。abort()函数会立刻终止函数,但不做任何清理工作。

这两个函数不会销毁局部对象,因为堆栈unwinding不被执行。为确保所有局部对象的析构函数均获得调用,应该运用异常或正常返回机制,之后再由main()离开。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈