c++中头文件的保护块是什么?
What is a guard block for a header file in C++?
我试图使用Code::Blocks IDE制作一个c++类,并且有一个名为"保护块"的字段。我已经搜索过了,但没能找到任何有用的信息。这个领域是做什么的?谢谢。
保护块用于防止同一个编译单元(c++文件)多次包含头文件。它们看起来像这样:
// Foo.h
#ifndef INCLUDE_FILE_NAME_HERE_H_
#define INCLUDE_FILE_NAME_HERE_H_
class Foo
{
};
#endif
如果在多个文件中包含同一个文件,则会出现多个定义错误。在小型项目中没有必要使用include守卫,但在任何中型到大型项目中都是至关重要的。
保护块用于防止头文件在单个翻译单元中被多次包含。当您包含许多头文件,而这些头文件又包含通用的标准头文件时,这通常是一个问题。
多个包含同一个文件的问题是,它会导致同一个符号被定义多次。
保护子句可以用#define
和#ifdef
语句处理,但用非标准但通用的#pragma once
语句处理要简单得多。
// foo.h
#pragma once
int foo(void);
// etc.
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 受保护遗产的实际用途是什么
- 受保护成员辅助功能额外签入C++的原因是什么?
- 如果使单一实例构造函数受到保护,缺点是什么 - 继承 - C++11.
- 保护 Cap'n Proto RPC 网络流量的好方法是什么?
- 是什么使构造函数受到保护
- c++中头文件的保护块是什么?