C和C中的头部守卫
作者:互联网
在LearnCpp.com | 1.10 — A first look at the preprocessor.在Header guards下,有一些代码片段:
add.h:
#include "mymath.h"
int add(int x, int y);
subtract.h:
#include "mymath.h"
int subtract(int x, int y);
main.cpp中:
#include "add.h"
#include "subtract.h"
在实施头部防护时,提到如下:
#ifndef ADD_H
#define ADD_H
// your declarations here
#endif
>宣言可以在这里发表什么?并且,int main()应该在#endif之后吗?
>将_H添加为约定或必须执行的操作?
谢谢.
解决方法:
FILENAME_H是一种惯例.如果你真的想要,你可以使用#ifndef FLUFFY_KITTENS作为标题保护(前提是它没有在其他任何地方定义),但如果你把它定义在其他地方,那将是一个棘手的错误,比如用于某事或其他的小猫数量.
在头文件add.h中,声明实际上在#ifndef和#endif之间.
#ifndef ADD_H
#define ADD_H
#include "mymath.h"
int add(int x, int y);
#endif
最后,int main()不应该在头文件中.它应该始终位于.cpp文件中.
清除它:
#ifndef ADD_H基本上意味着“如果文件或包含文件中没有#defined ADD_H,则在#ifndef和#endif指令之间编译代码”.因此,如果您尝试在.cpp文件中多次#include“add.h”,编译器将看到ADD_H已经#defined的内容,并将忽略#ifndef和#endif之间的代码.标头保护仅阻止在同一.cpp文件中多次包含头文件.标头保护不会阻止其他.cpp文件包含头文件.但是所有.cpp文件只能包含一次受保护的头文件.
标签:c-3,include-guards,c,header-files,macros 来源: https://codeday.me/bug/20190916/1808135.html