我正在从事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自动完成,因为不同的要求,它会产生不同于我需要的答案。
如何将所包含的平台标题的可见性限制为我的库标题?
答案 0 :(得分:2)
通常,您不能避免宏名称污染。您可以使用的唯一工具是编译器防火墙,在实现文件中包含C(或者只是麻烦)标头。然后,在头文件中为它提供自己的C ++接口。