【问题标题】:Best practice: Use of stdint types in a header file最佳实践:在头文件中使用 stdint 类型
【发布时间】:2012-04-15 11:17:53
【问题描述】:

确保stdint.h 包含在使用该标头类型的标头中的最佳方法是什么?

我可以看到的替代方案是:

  • 在标头本身中包含stdint.h(危险,不是吗?)
  • 如果在解析标头时不包含某些内容,则将其标记给编译器(类似于 #ifndef _STDINT_H 以及伴随的 #error "stdint.h not included"
  • 教育其他开发人员始终将stdint.h 包含在我需要它的任何标头之前,可以使用 cmets、对话、文档或三者的混合(最后一个更可取)。

如果还有其他值得一提的替代方案,请随意 - 我只是在猜测我应该在这里做什么。

【问题讨论】:

  • 为什么在标题中包含stdint.h 会很危险?
  • 很抱歉,我实际上并不知道这个问题的答案 - 曾经有人告诉我,在标题中包含标题是危险的,但没有得到任何进一步的解释。

标签: c header stdint


【解决方案1】:

如果您在标头中使用来自 stdint.h 的类型,您确实应该在该标头中包含 stdint.h

通常最好在头文件中包含最少数量的文件以减少编译时间。因此,只要有可能,您应该在标头中转发声明类型。由于来自stdint.h 的类型不能被前向声明(它们只是原始类型的typedef),除了在标头中包含stdint.h 之外别无选择。

【讨论】:

    【解决方案2】:

    我的意见是,如果你使用包含保护,在头文件中包含头文件是可以的。

    类似

    # ifndef HEADER
         # define HEADER
         # include header.h
    # endif
    

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 2013-03-03
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2012-11-01
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多