其他分享
首页 > 其他分享> > C和C中的头部守卫

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