【问题标题】:Standard Template Library using g++使用 g++ 的标准模板库
【发布时间】:2009-06-04 18:46:41
【问题描述】:

在 linux 中从 windows 迁移程序时,我在使用 c++ 标准模板库时遇到了问题。我正在尝试 typedef 一个模板,我收到错误 'expected initializer before '

typedef std::list<:pair> > PairList;

任何想法为什么这可以使用 mvc++ 而不是使用 g++ 以及如何修复它?

【问题讨论】:

    标签: visual-c++ stl g++


    【解决方案1】:

    我认为这是关于#includes。

    以下真正最小的代码在 Linux 上使用 g++ 完美编译

    #include <utility>
    #include <list>
    
    typedef std::list< std::pair< int,double> > PairList;
    
    PairList x;
    

    【讨论】:

    • 为什么它在 MSVC++ 中工作,我怀疑它是一个预编译头问题。
    【解决方案2】:

    关于标准包含文件要记住的一点是,它们可以相互调用,但不是必须的。 (这并不是因为它们可能会污染命名空间,因为它们都使用命名空间 std,你不应该乱用它。)

    在 MSVC++ 中,includes 是可能的,反之亦然,但在 g++ 标头中并非如此。因此,程序可能在 MSVC++ 中编译而不是在 g++ 中编译,源代码中缺少必需的标头。

    确保实际包含所有必需的标头,这样就可以了。

    【讨论】:

      【解决方案3】:

      你是#include &lt;utility&gt; 换了pair 吗?

      【讨论】:

        【解决方案4】:

        我对 G++ 中的代码没有任何问题,并且通常发现它对 STL 的支持非常好。你有所有的#include 指令吗?有时这些因平台而异(即使它们不应该)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-13
          • 1970-01-01
          • 2013-10-05
          • 2011-05-03
          • 2011-09-30
          • 1970-01-01
          • 2016-08-10
          • 1970-01-01
          相关资源
          最近更新 更多