首页 > 解决方案 > 防止将标头包含在 C 中的同一文件中

问题描述

我正在寻找一种方法来强制某些标头不能包含在同一个文件中。

为了进一步解释这种情况,假设我有标题

a_1.h, b_1.h

a_2.h, b_2.h

我想防止将_1_2文件包含到同一个文件中,无论它们是否

a_ or b_

标签: cgccc-preprocessor

解决方案


假设混合使用_1_2标头是需要捕获的错误,捕获它的简单方法是定义和检查保护宏以检查这些标头的混合使用并使用#error指令报告错误。

例如,a_1.h标头可以包含以下代码:

#ifndef A_1_H__INCLUDED
#define A_1_H__INCLUDED

/* Define header set as 1 if not already defined. */
#ifndef HEADER_SET
#define HEADER_SET 1
#endif

/* Check for consistent header set usage. */
#if HEADER_SET != 1
#error "Inconsistent header sets"
#endif

/* Other header stuff ... */

#endif /* A_1_H__INCLUDED */

其他标题将相似,但_2标题将具有#define HEADER_SET 2#if HEADER_SET != 2


推荐阅读