3

我有一个简单的头文件,我在其中前向声明命名空间中的所有类,例如。

#ifndef TEST_FWD_HPP
#define TEST_FWD_HPP

namespace a {
    namespace b {

            class A;
            class B;

    }
}

#endif

是否应该防止该文件出现多个包含(#ifndef...)?这仅对前向声明有意义吗?

4

3 回答 3

5

像这样保护头文件通常是一种好习惯。在大多数情况下,文件只包含一次是没有必要的,但是当项目变得复杂时,头文件包含在其他头文件中,它可以帮助您保持理智。

如果你只有前向定义和函数原型,那么通常是没有必要的,但随着时间的推移,头文件往往会增加东西,这通常是理所当然的事情。

于 2012-10-07T08:45:10.377 回答
2

多个包含保护不仅服务于多个声明错误。您需要在每个头文件中插入这些保护,以避免无限包含循环。

于 2012-10-07T08:45:38.973 回答
2

只需使用(正式非标准)#pragma once并完成它。

除了防止同一翻译单元中的多个包含之外,标头保护或#pragma once让精明的编译器避免重新扫描文件。

于 2012-10-07T08:51:54.993 回答