在我的 C++ 代码中,我定义了一些公共和私有标头。私有标头只能包含在基于某些 #ifdef 的公共标头中。
如果用户直接包含这些私有标头,如何向用户抛出错误或警告?
在公共标头中定义一些标记。
在公共标头末尾清除它。
在您的私有标头中测试它。
用户仍然可以绕过它,但不能通过简单的#include.
生成的警告或错误应说明他们做了什么,以及他们应该做什么。
公共标头:
#pragma once
#define IN_MY_PUBLIC_HEADER_OH_WOW
#include "private_header.h"
#undef IN_MY_PUBLIC_HEADER_OH_WOW
Run Code Online (Sandbox Code Playgroud)
私有标头:
#pragma once
#ifndef IN_MY_PUBLIC_HEADER_OH_WOW
#error __FILE__ should only be included via the public headers, never directly in your code
#endif
Run Code Online (Sandbox Code Playgroud)
选择一个比 更好的令牌名称IN_MY_PUBLIC_HEADER_OH_WOW。请勿__连续包含两个,或_以大写字母开头,以避免与标准中的限制发生冲突。
这可以防止您意外地直接包含私有标头,但仍然允许您通过公共标头间接包含它。
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |