其他分享
首页 > 其他分享> > 如何在C中更清楚地包含头文件

如何在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