C++:NetBeans 在创建标头时生成的一些行代码
C++: some lines code generate by NetBeans when create header
当我在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 时发生的链接错误。
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 使用 选项配置 Netbeans 以C++代码
- 犰狳代码无法在 msys2 和 netbeans 中编译
- 在 netbeans 中将C++代码输出为汇编语言
- 视觉工作室代码远程调试C 类似Netbeans的方式
- C++:NetBeans 在创建标头时生成的一些行代码
- 如何在 Emacs 中自动格式化代码,就像在 Netbeans IDE 中一样
- 如何打开代码:在netbeans中阻塞c++项目
- 在Netbeans上编译和运行OpenGL代码
- Netbeans C/C++项目中的代码相同,但输出不同
- 在 NetBeans 中编译基于 Qt 的C++代码时出错
- Netbeans C/C++ on Linux "step in to" Linux C 运行时代码?
- 尽管netbeans在代码完成中显示了函数,但未定义引用
- 在 Netbeans 中运行代码时无法键入任何内容
- 当我在代码中使用 "string" 命令时,NetBeans C++ 将生成但不运行(退出值 127)
- NetBeans 8.2配置代码辅助到c++ 11
- 在Ubuntu(Netbeans)和Windows(Visual Studio 2012)中编译相同的c++代码
- NetBeans生成的Makefile忽略测试返回代码
- NetBeans c++的方式来检查编译用调试的代码
- c++代码在NetBeans 8.0中无法编译(msys mkdir可能存在的问题)