关于包括警卫的两个常见问题:
第一个问题:
为什么不包括保护我的头文件不受相互的,递归包含的警卫?我不断收到有关不存在的符号的错误,这些符号显然存在,甚至每次我写下类似的东西时都会出现更奇怪的语法错误:
"啊"
#ifndef A_H
#define A_H
#include "b.h"
...
#endif // A_H
Run Code Online (Sandbox Code Playgroud)
"BH"
#ifndef B_H
#define B_H
#include "a.h"
...
#endif // B_H
Run Code Online (Sandbox Code Playgroud)
"的main.cpp"
#include "a.h"
int main()
{
...
}
Run Code Online (Sandbox Code Playgroud)
为什么我会收到编译"main.cpp"的错误?我需要做些什么来解决我的问题?
第二个问题:
为什么不包括防止多个定义的警卫?例如,当我的项目包含两个包含相同标题的文件时,链接器有时会抱怨多次定义某个符号.例如:
"header.h"
#ifndef HEADER_H
#define HEADER_H
int f()
{
return 0;
}
#endif // HEADER_H
Run Code Online (Sandbox Code Playgroud)
"source1.cpp"
#include "header.h"
...
Run Code Online (Sandbox Code Playgroud)
"source2.cpp"
#include "header.h"
...
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我需要做些什么来解决我的问题?