在 autoconf 手册中,注意到
AC_INIT(包,版本,[错误报告],[tarname],[url])
定义了多个宏名称,例如 AC_PACKAGE_NAME 和 PACKAGE_NAME。
运行 configure 还会生成一个配置文件,其定义如下:
定义 HAVE_LIBGMP 1
在我编写 C++ 代码时,我发现这些宏很烦人但很有用。事实上,我需要与使用自动工具的库链接,因此在其标题中包含这些宏的情况发生了很多次。所以情况是标题宏存在冲突,例如:
定义 PACKAGE_NAME “库”
定义 PACKAGE_NAME “我的”
所以,我想知道是否有办法告诉自动工具在某种结构中至少定义一些宏,如下所示:
`struct header_information{
static string package_name;
static bug_report;
....
}`
然后用正确的宏名称初始化它。这个解决方案会保持这些信息被封装并且不会污染全局命名空间?