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

标签 c++ c

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

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

最佳答案

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

即使对于这些,如果不更改NDEBUG,多重包含也没有效果。他们之间。

您自己的 header 以及您可能使用的其他库的 header 应使用包含防护(或 unportable but often working #pragma once )。

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

关于c++ - 为什么在 C/C++ 中重复包含一些头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29112736/

相关文章:

c++ - 基本的 openmp 程序运行速度较慢

c++ - 在这里进行位移有什么意义?

c - 如何在 C 中初始化二维字符串数组的行

c - *** 检测到 glibc *** ./333 : realloc(): invalid next size: 0x0804b008 ***

c++ - 构造函数是否忽略了提供给构造函数的参数的成员初始化列表的一部分?

c++ - fork 创建的进程作为父进程的拷贝有什么意义?

c++ - 转移/减少 Bison 的冲突

用 C 语言为多线程服务器创建作业队列

c - 在 C 中读取二进制文件的奇怪之处

c - 使用 xlib 将假按键事件发送到窗口