Linux汇编程序消息错误c ++

时间:2015-02-11 04:59:43

标签: c++ linux

我试图谷歌此错误,但没有找到任何有用的东西。我是编程新手,所以请耐心等待。这个错误显示我第一次编译card.cpp并且从那时起就没有消失。我的所有这个程序的cpp文件都给出了同样的错误。当我编译时,当我输入g ++ card.cpp(或我的任何.cpp文件)时,我会继续这样做 -

/tmp/ccW6ByXY.s: Assembler messages:
/tmp/ccW6ByXY.s:13: Error: symbol `_ZNSi6ignoreE' is already defined
/tmp/ccW6ByXY.s:25: Error: symbol `_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE' is already defined

我有我的驱动程序和3个.h文件(带有各自的.cpp文件)。当我单独或一起编译每个人时,他们每个都给出这个消息。任何信息表示赞赏。

#include "card.h"
//using namespace std;


Card::Card()
{
    rank = 'A';
    suit = spades;
}

Card::Card(int _rank, Suit _suit)
{
    rank = _rank;
    suit = _suit;
}

string Card::toString() const //return string of card (ie 2h)
{
    string cardString = suitString() + rankString();
    return cardString;
}

int Card::getRank() const
{
    return rank;
}

Card::Suit Card::getSuit() const
{
    return suit;
}

bool Card::operator == (const Card &rhs) const
{
    return (rank==rhs.rank) || (suit == rhs.suit);
}

string Card::suitString() const
{
    Suit s = spades;
    switch(s)
    {
        case spades: return "s";
            break;
        case hearts: return "h";
            break;
        case diamonds: return "d";
            break;
        case clubs: return "c";
            break;
    }
}

card.h位于

之下
#ifndef _CARD_H
#define _CARD_H


#include <iostream>
#include <string>
using namespace std;

class Card
{
public:

    enum Suit {spades, hearts, diamonds, clubs};

    Card();                     // default: ace of spades

    Card(int, Suit);

    string toString()   const;  // return string version: Ac 4h Js
    int   getRank()     const;  // return rank, 1..13
    Suit  getSuit()     const;  // return suit


    bool operator == (const Card &rhs) const;

private:

    int rank;
    Suit suit;

    string suitString()  const;  // return "s", "h",...
    string rankString()  const;  // return "A", "2", ..."Q"

};

#endif

1 个答案:

答案 0 :(得分:1)

您所看到的是目标文件中某些符号的错位名称。为了理解它们,请使用c++filt,如下所示:

$ c++filt -n _ZNSi6ignoreE
std::istream::ignore
$ c++filt -n _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE
std::basic_istream<wchar_t, std::char_traits<wchar_t> >::ignore

好的!这些名字现在看起来很熟悉了。因此,istream::ignore存在于多个目标文件中。 [看到你的构建命令后继续:)]