【发布时间】:2011-08-11 04:59:53
【问题描述】:
我使用 extern 消除了翻译单元中的两个标题包含。这是可取的吗?
我的具体情况:我有一个名为ParseTree的类,它积累了Token*的。 ParseTree* 是 Parser 的私有成员。
最初,我在parse_tree.cc 中有以下几行。
#include "parser.h"
#include "token.h"
分析我的代码后,我隔离了两个实际上具有外部依赖关系的函数,并将包含替换为以下内容:
extern std::ostream& operator<<(std::ostream& out, const Token& t); // @token.h
extern bool hasPriority(const Token* p_tok1, Token* p_tok2); // @parser.h
这两种解决方案似乎都有效。选择 extern 而不是 include 时,我应该注意哪些隐患?
【问题讨论】:
-
外部链接是函数声明的默认设置,因此
extern本身是多余的。 -
这是我忽略的一个很好的观点。
标签: c++ coding-style include extern