【发布时间】:2015-09-27 10:57:17
【问题描述】:
我正在开发一个 C++ 库项目。我需要包含一个特定于平台的标头才能访问某些#defines。问题是,我只希望平台的标题在我的标题中可见。对于那些包括我的标题的人,我不希望他们看到额外的符号。
我曾考虑使用 C++ 命名空间来包含/控制符号可见性,但它不起作用(授予,#define statements within a namespace)。据我所知,--exclude-libs,all 之类的选项仅适用于链接时的库符号,而不适用于标题符号。
我还考虑过使用平台标头中我需要的符号,然后取消定义它包含的所有符号。但我不知道如何使用通配符#undef platform_header.h/*。
Including a header file into a header file without exposing it's content to the includer 也有类似的问题。他这样做是为了限制 IDE 自动完成,由于不同的要求,这会产生与我需要的不同的答案。
如何将包含的平台标头的可见性限制为仅我的库标头?
【问题讨论】:
-
一种支持这一点的机制
#scope被提议open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1614.pdf 但从未被采用。