'xor'标记之前的预期不合格标识

时间:2014-10-12 16:15:31

标签: c++ compiler-errors g++

为什么g ++编译器会说:error:在'xor'标记之前预期的unqualified-id

class BigInteger{
public:
    unsigned *array;

    BigInteger xor(BigInteger bi){    // g++ indicates error this line
        BigInteger n;
        if(bi.array == (unsigned*)0){
            return n;
        }
        return n;
    }
};

2 个答案:

答案 0 :(得分:13)

xor是C ++中^备用标记,您不能将其用作标识符。 or / bitorand / bitand|||&&&分别相同),以及其他一些人。它们基本上是iffor等关键字。

为您的功能选择其他名称。

替代令牌的完整列表(C ++标准§2.12关键字,请参阅§2.6替代令牌的映射):

  • and_eq
  • BITAND
  • BITOR
  • 并发症
  • NOT_EQ
  • or_eq
  • XOR
  • xor_eq

答案 1 :(得分:0)

的呻吟声。是的,这就是追逐你的尾巴之一然后意识到“什么?”并动摇你的头脑情况。

在我的情况下,我有一个类定义,它定义了一个类方法:

List* xor(List* list)

一个人得到g ++有用的错误消息: 错误:在'^'标记

之前预期的非限定标识

最终人们发现xor是^的同义词,因此不能是函数名。

更糟糕的是(在我的情况下)是在Visual Studio(在我的情况下为2010)中在MS Windows中完美地运行。并且是自1999年以来通过各种Visual Studio版本开发的代码(Visual Studio 6)。

所以现在我需要在Windows上重命名该函数并重建,以及在linux上重建g ++ ...当你处理它时,这些问题会变得更大。