c - 防止将标头包含在 C 中的同一文件中
问题描述
我正在寻找一种方法来强制某些标头不能包含在同一个文件中。
为了进一步解释这种情况,假设我有标题
a_1.h, b_1.h
和
a_2.h, b_2.h
我想防止将_1
和_2
文件包含到同一个文件中,无论它们是否
a_ or b_
解决方案
假设混合使用_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
。
推荐阅读
- angular - 带有输入文本字段的 Angular 4 货币管道
- angular - Angular 应用程序(7.2 版)在 Firefox 上无法在 localhost 上运行
- python - 如何评估 KNeighborsRegressor 的决策边界
- javascript - 打字稿如何仅将接口中的属性和方法复制到新对象?
- sql-server - T-SQL 获取视图列定义
- jquery - 会话已设置。但是如何在函数中使用会话的值呢?
- google-cloud-platform - Cloud CDN 签名 url VS Cloud Storage 签名 url?
- python - 访问 UnivariateSpline 曲线上的值
- java - 使用 spring-data-jdbc 进行审计?
- sql - 如何从 oracle DB 中的表中检索员工姓名,其名称中恰好有一个“a/A”?