【问题标题】:Why duplicate include some header file in C/C++? [closed]为什么在 C/C++ 中重复包含一些头文件? [关闭]
【发布时间】:2015-03-18 01:33:30
【问题描述】:
#include<assert.h>
#include<stdio.h>
**#include<stdlib.h>**
#include<string.h>
**#include<stdlib.h>**
#include<time.h>

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

【问题讨论】:

  • 从另一个代码库复制和粘贴而不检查?健忘?
  • 你当然不需要。如果你删除后一个,它几乎肯定会起作用。
  • 我总是尝试按字母顺序对包含的内容进行排序,这使得这个错误更容易发现,也更难制造。但是,它也是无害的。
  • @mangusta 不,它没有。 include guards 用于防止重复代码包含,预处理器很笨,很乐意包含它。
  • 我投票决定将此问题作为离题结束,因为无法确定作者在编写代码时的想法。

标签: c++ c


【解决方案1】:

C 标准中只有一个非幂等标准头:&lt;assert.h&gt;
C++ 继承了它并添加了自己的适配:&lt;cassert&gt;

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

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

如果您对标头进行排序(但首先包括 implementation-files 自己的标头),您可以轻松消除重复项,而无需依赖它。

【讨论】:

  • Deduplicator 回答这个问题很有趣!
猜你喜欢
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
相关资源
最近更新 更多