【问题标题】:Limit scope of included platform header to to just the header file including it?将包含的平台标头的范围限制为仅包含它的头文件?
【发布时间】: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 自动完成,由于不同的要求,这会产生与我需要的不同的答案。

如何将包含的平台标头的可见性限制为仅我的库标头?

【问题讨论】:

标签: c++ header include


【解决方案1】:

通常,您无法避免宏名称污染。您可以使用的唯一工具是编译器防火墙,用于在实现文件中包含 C(或只是麻烦的)标头。然后在你的头文件中提供你自己的 C++ 接口。

【讨论】:

  • 谢谢干杯。所以我很清楚:没有办法通配符undef? (我认为这是我的未决问题)。
  • 不具备标准功能,而且我不知道有任何语言扩展可以做到这一点。
猜你喜欢
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多