为什么重复包含C / C ++中的一些头文件?

时间:2015-03-18 01:33:30

标签: c++ c

#include<assert.h>
#include<stdio.h>
**#include<stdlib.h>**
#include<string.h>
**#include<stdlib.h>**
#include<time.h>

stdlib.h包括两次,但为什么?

1 个答案:

答案 0 :(得分:3)

C标准中只有一个非幂等标准标题:<assert.h> C ++继承了它并添加了自己的改编:<cassert>

即使对于那些,如果不改变它们之间的NDEBUG,多重包含也无效。

您自己的标头以及您可能使用的其他图书馆的标头应使用包含警戒(或unportable but often working #pragma once)。

如果您对标题进行排序(首先包括实现文件自己的标题),您可以轻松地消除重复项,而不需要依赖它。