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

C++: some lines code generate by NetBeans when create header

本文关键字:代码 NetBeans 创建 C++      更新时间:2023-10-16

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

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

#ifndef EXAMPLE_H
#define EXAMPLE_H
// put code here
#endif

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

谢谢:)

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

的工作原理是,它检查是否定义了宏EXAMPLE_H。如果是,则省略整个文件。如果不是,则定义它并保留文件。这样,下次出现此文件时,内容将被省略。

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

A.H

#ifndef A_H
#define A_H
struct Foo {};
#endif

B.H

#include "a.h"
#ifndef B_H
#define B_H
struct Bar
{
    Foo x;
};
#endif

C.H

#include "a.h"
#ifndef C_H
#define C_H
struct Baz
{
    Foo f;
};
#endif

然后你创造东西.cpp

#include "b.h"
#include "c.h"
Bar y;
Baz z;

预处理后.cpp将有

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

这将为您提供有关Foo多个定义的错误。

这些行可确保文件仅包含一次。它们可以防止在多个文件中包含 .h 时发生的链接错误。