C++ C++;:创建标头时NetBeans生成的某些行代码

C++ C++;:创建标头时NetBeans生成的某些行代码,c++,netbeans,header,C++,Netbeans,Header,当我在MicrosoftVisualStudio中创建头文件时,它只是一个空白文件,我经常添加一些函数或类的原型等 当我从Netbean创建头文件时。它通常具有这种结构。(假设我的头文件是示例): 请告诉我,上面这些代码的含义。如果我删除这个,有什么问题吗?我觉得很奇怪,因为VS没有生成这个 谢谢:)这些被称为包含保护,当您多次包含同一文件时,它们可以防止多个定义错误。即使你没有,他们也不会伤害任何人,所以你最好把他们留在家里 它的工作原理是,检查宏示例\u H是否已定义。如果是,则会忽略整个文

当我在MicrosoftVisualStudio中创建头文件时,它只是一个空白文件,我经常添加一些函数或类的原型等

当我从Netbean创建头文件时。它通常具有这种结构。(假设我的头文件是示例):

请告诉我,上面这些代码的含义。如果我删除这个,有什么问题吗?我觉得很奇怪,因为VS没有生成这个


谢谢:)

这些被称为包含保护,当您多次包含同一文件时,它们可以防止多个定义错误。即使你没有,他们也不会伤害任何人,所以你最好把他们留在家里

它的工作原理是,检查宏
示例\u H
是否已定义。如果是,则会忽略整个文件。如果不是,则定义它并保留文件。这样,下次出现此文件时,内容将被忽略

如果有两个不同的头包含相同的头,则通常会发生这种情况,例如:

a、 h

b、 h

c、 h

然后用创建stuff.cpp

#include "b.h"
#include "c.h"
Bar y;
Baz z;
在预处理stuff.cpp之后

struct Foo {};

struct Bar
{
    Foo x;
};
struct Baz
{
    Foo f;
};
Bar y;
Baz z;
相对于(不包括防护装置)


这将给您一个关于
Foo

的多个定义的错误。这些行确保文件只包含一次。它们可以防止在多个文件中包含.h时出现链接错误。

包含一次,而不是链接一次。很好的示例:)非常感谢。
#include "a.h"
#ifndef B_H
#define B_H
struct Bar
{
    Foo x;
};
#endif
#include "a.h"
#ifndef C_H
#define C_H
struct Baz
{
    Foo f;
};
#endif
#include "b.h"
#include "c.h"
Bar y;
Baz z;
struct Foo {};

struct Bar
{
    Foo x;
};
struct Baz
{
    Foo f;
};
Bar y;
Baz z;
struct Foo {};
struct Bar
{
    Foo x;
};

struct Foo {};
struct Baz
{
    Foo f;
};
Bar y