我正在寻找一种方法来强制某些标头不能包含在同一个文件中.
为了进一步解释这种情况,假设我有标题
a_1.h, b_1.h
Run Code Online (Sandbox Code Playgroud)
和
a_2.h, b_2.h
Run Code Online (Sandbox Code Playgroud)
我想阻止将_1和_2文件包含在同一个文件中,无论它们是否存在
a_ or b_
Run Code Online (Sandbox Code Playgroud)
假设混合_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 */
Run Code Online (Sandbox Code Playgroud)
其他标题将类似,但_2标题将具有#define HEADER_SET 2和#if HEADER_SET != 2.