如何在C中更清楚地包含头文件
作者:互联网
在C中,我有一些头文件,例如:Base.h,以及一些使用Base.h的类:
//OtherBase1.h
#include "Base.h"
class OtherBase1{
// something goes here
};
//OtherBase2.h
#include "Base.h"
class OtherBase2{
// something goes here
};
在main.cpp中,由于重复的标题,我只能使用这两个OtherBase类中的一个.如果我想使用这两个类,在OtherBase2.h中我必须#include“OtherBase1.h”而不是#include“Base.h”.有时,我只想使用OtherBase2.h而不是OtherBase1.h,所以我认为在OtherBase2.h中包含OtherBase1.h真的很奇怪.我该怎么做才能避免这种情况以及包含头文件的最佳做法是什么?
解决方法:
您应该在Base.h中使用include guards.
一个例子:
// Base.h
#ifndef BASE_H
#define BASE_H
// Base.h contents...
#endif // BASE_H
这将防止多次包含Base.h,并且您可以使用两个OtherBase标头. OtherBase标头也可以使用包含警戒.
基于某个头中定义的API的可用性,常量本身对于代码的条件编译也是有用的.
替代方案:#pragma一次
请注意,#pragma once可用于完成相同的操作,而不会出现与用户创建的#define常量相关的一些问题,例如:名称冲突,偶尔键入#ifdef而不是#ifndef,或忽略关闭条件的轻微烦恼.
#pragma一旦通常可用,但包含警卫始终可用.事实上,您经常会看到表单的代码:
// Base.h
#pragma once
#ifndef BASE_H
#define BASE_H
// Base.h contents...
#endif // BASE_H
标签:c-3,c,header-files 来源: https://codeday.me/bug/20191002/1843605.html