从装有 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 解析器中不容易修复的解析问题。这可以解释你所看到的。
关于c++ - 使用旧的 C 库调用临时对象的方法会导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296744/