【发布时间】:2013-05-23 14:48:51
【问题描述】:
在autoconf手册中,注明
AC_INIT(包、版本、[错误报告]、[tarname]、[url])
定义多个宏名称,例如 AC_PACKAGE_NAME 和 PACKAGE_NAME。
运行 configure 还会生成一个配置文件,其定义如下:
定义 HAVE_LIBGMP 1
在我编写 C++ 代码时,我发现这些宏很烦人但很有用。事实上,我需要与使用自动工具的库链接,因此在其标题中包含这些宏的情况发生了很多次。所以情况是 header 宏存在冲突,例如:
定义 PACKAGE_NAME “库”
定义 PACKAGE_NAME “我的”
所以,我想知道是否有办法告诉自动工具在某种结构中至少定义一些宏,如下所示:
`struct header_information{
static string package_name;
static bug_report;
....
}`
然后用正确的宏名称初始化它。 该解决方案将这些信息封装起来,不会污染全局命名空间?
【问题讨论】:
-
问题是很多包维护者错误地安装了
config.h,污染了全局命名空间。任何安装了config.h的包都应该有一个针对它的错误。
标签: namespaces autotools