从具有glibc-2.5-25(suse 10.2)的计算机移植到具有glibc-2.3.2-6(suse 8.2)的计算机时,我的代码存在一个奇怪的问题。我在临时对象上使用了几种方法调用,但它们在较旧的计算机上不起作用。

class A
{
public:
    A(int n) {}
    void method() {}
};

int main()
{
    A(10).method(); //here the compiler gives parse error before .

    A a(10);
    a.method(); //this works fine
}

是否可能由于较旧的libc版本而发生这种情况,或者可能是我的IDE中的设置(编译器设置)?

最佳答案

为什么libc版本会影响解析错误? g++版本会更有用。

gcc围绕3.4版更改了解析器,并解决了很多解析问题,这些问题在旧的yacc解析器中不容易解决。那可以解释你所看到的。

10-02 01:11