使用Autoconf处理不推荐的包含 我在C++项目中使用了,注意到在G++ 4.3中,它被禁止使用“无序”映射。我需要保持与旧系统的兼容性,这些旧系统没有可用的unordered_map。我突然想到,这正是我已经在使用的autoconf可以处理的事情。然而,我没有找到关于这样做的文档

使用Autoconf处理不推荐的包含 我在C++项目中使用了,注意到在G++ 4.3中,它被禁止使用“无序”映射。我需要保持与旧系统的兼容性,这些旧系统没有可用的unordered_map。我突然想到,这正是我已经在使用的autoconf可以处理的事情。然而,我没有找到关于这样做的文档,c++,hashmap,autoconf,deprecated,unordered-map,C++,Hashmap,Autoconf,Deprecated,Unordered Map,我想我需要做如下事情: -将我的代码中的ext::hash\u map的所有实例替换为my\u hash\u map -将我的代码中的ext/hash\u map的所有实例替换为my\u hash\u INCLUDE -使用ac\u CHECK\u标题和ac\u DEFINE 我还没有弄清楚到底是什么样的autoconf魔法让它起作用,我想知道它是否是最好的解决方案。当然,这是许多其他人会处理的事情,可能有一些标准的解决方案,我一直无法找到 因此,有三个相关问题: -是否有我应该使用的标准处理方

我想我需要做如下事情:
-将我的代码中的
ext::hash\u map
的所有实例替换为
my\u hash\u map

-将我的代码中的
ext/hash\u map
的所有实例替换为
my\u hash\u INCLUDE

-使用
ac\u CHECK\u标题
ac\u DEFINE

我还没有弄清楚到底是什么样的autoconf魔法让它起作用,我想知道它是否是最好的解决方案。当然,这是许多其他人会处理的事情,可能有一些标准的解决方案,我一直无法找到

因此,有三个相关问题:
-是否有我应该使用的标准处理方法?
-如何在autoconf中执行此操作?

-我应该只使用Wno -不推荐,假设C++标准在我的生命周期内不会被更新吗?< /P> < P>我会考虑将代码保留为原来的样子,并关闭“弃用”警告,尤其是如果您必须支持那些只有Ext:HasyMax可用的旧系统。
IIRC ext::hash_映射无论如何都不是标准的一部分,因此可能造成的主要危害是(最终)G++维护人员将取消对它的支持。但是,如果您重新调整代码以同时包含哈希映射和tr1无序映射,那么您会突然将这段特定代码的测试工作量加倍。除非有一个特定的原因,可能需要你重复努力,把它保存在更有价值的东西上。

< P>我会考虑把代码保留原样,而不是关闭“弃用”警告,尤其是如果你必须支持那些只有EX::HASHYMAP可用的旧系统。


IIRC ext::hash_映射无论如何都不是标准的一部分,因此可能造成的主要危害是(最终)G++维护人员将取消对它的支持。但是,如果您重新调整代码以同时包含哈希映射和tr1无序映射,那么您会突然将这段特定代码的测试工作量加倍。除非有特定的原因可能需要您重复此工作,否则请将其保存为更有价值的内容。

您可以使用
AC\u CHECK\u HEADERS([my\u header\u file])
查看存在哪些文件--然后创建一个新的
类MyApp::hash_map
,它根据使用的定义相应地包装功能。

您可以使用
AC_CHECK_header([my_header_file])
查看存在哪些文件,然后创建一个新的
类MyApp::hash_map
,该类根据定义的使用方式相应地包装功能