我已经使用extern消除了翻译单元中的两个标题包含。这是可取的吗?建议使用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时,我应该注意哪些隐患?
外部链接是函数声明的默认值,所以'extern'本身是多余的。 –
这是我忽略的一个很好的观点。 –