无法用gcc编译C ++

时间:2011-12-22 00:06:29

标签: c++ gcc

我需要在我的linux系统上编译代码。这是简单的代码,我不知道出了什么问题:

我有这段代码,我无法编译它:

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

int main()
{
    string char1, char2, char3, char4, char5, char6;
    cout<<"Hello this is your standard True and False quiz"<<endl;
    cout<<"Please enter 'T' or 'F'"<<endl;
    cout<<"No#1 George Washington invented the toilet?"<<endl;
    cin>>char1;
    if ( char1 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char1;
    }
    if ( char1 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char1;
    }
    if ( char1 == "T" )
    {
        cout<<"You entered the incorrect answer. The answer is False"<<endl;
    }
    cout<<"No#2 The Squareroot of 3136 is 56?"<<endl;      
    cin>>char2;
    if ( char2 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char2;
    }
    if ( char2 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char2;
    }
    if ( char2 == "F" )
    {
        cout<<"You entered the incorrect answer. The answer is True"<<endl;
    }
    cout<<"No#3 
    system("PAUSE");
    return 0;
} 

当我尝试编译它时:

gcc file.c

我明白了:

test.c:1: fatal error: iostream: No such file or directory
compilation terminated.

据我所知,我需要所有的库,我做错了什么?

3 个答案:

答案 0 :(得分:34)

您正在尝试使用C编译器编译C ++。请改为g++ file.c

此外,最好为您的文件file.cpp命名 - 命名为.c不会停止编译,但它会帮助make等工具。此外,它还可以帮助后来遇到您的源代码的其他人(包括您自己)。

编辑:您的代码还有一些与您的问题无关的其他问题,但是一旦您进行编译,您将立即运行它们:

  1. 您的( char1 != "T" || "F")应为( char1 != "T" && char1 != "F")(请注意&&而不是||
  2. 当你输入错误时你正在读另一个字符,但由于你的代码没有循环,程序将在它对下一个字符做任何事情之前退出。
  3. 正如David Schwartz指出的那样,it's worth removing system("PAUSE")
  4. 对于C的新手来说,这是很常见的错误(欢迎!我建议从一些教程或入门书开始。这是一个很好的list of C books and tutorials)。

    如果你遇到了自己无法解决的问题,请随意打开另一个问题。

答案 1 :(得分:6)

这是C ++代码,而不是C,必须相应地进行编译。 (它也有很多逻辑错误,但我们稍后会担心。)

答案 2 :(得分:6)

你有C ++代码:

#include <iostream>
#include <string>
using namespace std;
/* ... */

但是正在尝试编译它,好像它是C:

gcc file.c

C ++不是C,你不应该像对待它那样对待它。

尝试将文件重命名为file.cpp并使用g++代替gcc

g++ file.cpp