我的C头文件通常与以下类似的风格,避免多次包含:在他Notes on Programming in C良好的C头风格
#ifndef <FILENAME>_H
#define <FILENAME>_H
// define public data structures/prototypes, macros etc.
#endif /* !<FILENAME>_H */
然而,罗勃·派克提出了以下论据有关的头文件:
有一个涉及
#ifdef
的小舞蹈可以防止文件被读两次,但在实践中通常是错误的 -#ifdef
位于文件本身中,而不是包含它的文件。结果往往是成千上万的不必要的代码行通过词法分析器,这是(在良好的编译器中)最昂贵的阶段。
一方面,派克是我真正佩服的唯一程序员。另一方面,将多个#ifdef
放在多个源文件中而不是将一个#ifdef
放在单个头文件中感觉不必要地尴尬。
处理多重包含问题的最佳方法是什么?
我觉得这个答案非常有用。有趣的是,我同意一个更讽刺的方式:如果电脑可以做我的工作,为什么我会这样做? ;) – 2011-03-24 14:20:01