ckv*_*ckv 10 c++ include-guards
在C++中,C++程序中头文件保护的目的是什么.
从net我发现这是为了防止包含文件一次又一次,但是如何保护头文件保证这一点.
Ste*_*n C 21
保护头(或更常规的"包括保护")是为了防止头文件包含多次的问题; 例如
#ifndef MARKER
#define MARKER
// declarations
#endif
Run Code Online (Sandbox Code Playgroud)
第一次使用此文件时#include,MARKER预处理程序符号将是未定义的,因此预处理程序将定义该符号,并且以下声明将包含在编译器看到的源代码中.在随后#include的时间,MARKER将定义符号,因此预处理器将删除#ifnde/中的所有内容#endif.
为了使其正常工作,MARKER对于可能为#include-ed的每个头文件,符号需要不同.
这种事情是必要的原因是在C/C++中在编译单元中多次定义具有相同名称的类型或函数是非法的.防护允许头文件到#include其他头文件,而不必担心这可能导致一些声明被多次包含.
简而言之,它不会阻止您#include一次又一次地处理文件.相反,它允许您执行此操作而不会导致编译错误.
| 归档时间: |
|
| 查看次数: |
8166 次 |
| 最近记录: |