【发布时间】:2017-02-02 21:57:14
【问题描述】:
假设我们有两个类,Foo 和 Bar。
在 Foo.h 中
#ifndef MYPROJ_FOO
#define MYPROJ_FOO
....
# endif
在Bar.cpp中,是否还需要保护include之类的
#ifndef MYPROJ_FOO
#include <Foo.h>
#endif
或者简单的#include 就足够了?如果我们已经有了 header 保护,那么包含保护对我来说似乎是多余的,但我经常看到这种做法,因此想知道我是否遗漏了一些东西。谢谢!
【问题讨论】:
-
您不需要将它放在 .cpp 文件中,因为任何其他文件都不应该是
#included。 -
不,你不需要这样做,因为你没有在其他文件中包含源文件。
-
所有主要的编译器都会记住已经包含的文件的包含保护,所以这是多余的(并且容易出错)。
标签: c++ macros c-preprocessor include-guards