何时包含C ++头文件?

时间:2016-11-20 04:28:25

标签: c++

我有两个问题:

  1. 要使用比较功能,我需要添加<string>,但我不需要包含<cctype>来使用isdigitispunct等?

  2. <cctype>ctype.h之间的区别是什么?为什么只有<string>而不是string.h

1 个答案:

答案 0 :(得分:0)

  1. 始终包含您在文件中使用的所有内容的标头。如果您使用A和B中的功能,即使A包含B,也包括A和B,因为明天A可能不包括B.如果您不需要,为什么忍受调试噩梦?每个文件都应该是自我一致的。 系统头也是如此。无法保证string或任何标题包含任何内容。一个实现可以包括厨房接收器和下一个实现的所有内容,或者同一实现的不同版本,可以向前声明它需要的内容并继续进行。不要假设任何您无法控制的代码中包含任何包含链。

  2. c *标头主要包装C标准库中的* .h标头。这将C ++版本放在std命名空间中,并为您处理名称修改。通常,C ++版本具有类型安全性调整或是调用C版本的模板。