假设我已经定义了一个自定义类,当且仅当在主应用程序中定义了另一个头文件时,我才想使用该类中的函数。
换句话说:除非主应用程序中包含特殊的头文件,否则我不想使用自定义类中的某些功能。
如果我在主应用程序中有自定义类定义。然后我会使用#ifdef _SOME_STUFF_H
和#endif
。这在头文件中不起作用(为什么我猜?)。
问题本身:我是否尝试实现完全无意义的内容,并且应该只包含所有必需的标题?
道歉,如果问题听起来不完全清楚。
类的代码示例(假设类在主应用程序中定义。):
class someClass
{
public:
void doThis();
#ifdef _SOME_HEADER_H
//uses stuff from some_header.h
void doThat();
#endif
};
void someClass::doThis()
{}
#ifdef _SOME_HEADER_H
//uses stuff from some_header.h
void someClass::doThat()
{}
#endif
组合并且工作正常等等。
如果我们将类分隔为header和source,我们将在main中包含someClass。
如果我在自定义类位于主应用程序中时构建解决方案。它会编译是否包含some_stuff.h(应该如此)。 如果我以另一种方式构建它(不包括自定义类头中的some_stuff.h,但在主应用程序中包含它。)它会给出“未解析的外部符号”。
答案 0 :(得分:0)
为什么你认为#ifdef
不起作用?头文件不是特别的;它们只是源代码,预处理和编译就像其他任何东西一样。只要确保你的标题按其依赖关系组织,即如果A.h依赖于B.h,则需要首先包含B.h.但这无论如何都适用。