struct HybridExpression {
    RawExpressionElement *ree;
    ExpressionNode *en;
};

vector<HybridExpression> hexpression;

hexpression.insert(hexpression.begin() + starti,
        (HybridExpression) {NULL, en});

gcc生成时不会发出警告,但Visual Studio 2010甚至不会对其进行编译。

它不喜欢此位:(HybridExpression) {NULL, en}

最佳答案

这使用的是C编程语言中C++中未包含的一部分,它称为“复合文字”。 g++ -ansi将对此进行诊断,说



这是,不是,是C++ 0x的一部分。

C++ 0x兼容语法应该是

hexpression.insert(hexpression.begin() + starti, HybridExpression{NULL, en});

引用C99标准的第6.5.2.5段:

09-15 14:50