【发布时间】:2011-03-24 14:10:16
【问题描述】:
我的 C 标头通常类似于以下样式以避免多次包含:
#ifndef <FILENAME>_H
#define <FILENAME>_H
// define public data structures / prototypes, macros etc.
#endif /* !<FILENAME>_H */
然而,Rob Pike 在他的Notes on Programming in C 中对头文件提出了以下论点:
涉及
#ifdef的一些小动作可以防止文件被读取两次,但在实践中通常做错了 -#ifdef存在于文件本身中,而不是包含它的文件中。结果通常是数千行不必要的代码通过词法分析器,这是(在好的编译器中)最昂贵的阶段。
一方面,Pike 是我真正钦佩的唯一程序员。另一方面,将多个#ifdefs 放在多个源文件中,而不是将一个#ifdef 放在一个头文件中感觉不必要的尴尬。
处理多重包含问题的最佳方法是什么?
【问题讨论】:
标签: c coding-style header-files