Невозможно скомпилировать C ++ с помощью gcc - PullRequest
11 голосов
/ 22 декабря 2011

Мне нужно скомпилировать код в моей системе 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 ]

34 голосов
/ 22 декабря 2011

Вы пытаетесь скомпилировать C ++ с помощью компилятора C.Вместо этого попробуйте g++ file.c.

Кроме того, рекомендуется называть ваш файл file.cpp вместо этого - присвоение ему имени .c не остановит его компиляцию, но поможет таким инструментам, как make.Кроме того, это поможет другим, кто позже столкнется с вашим исходным кодом (включая вас).

Изменить: В вашем коде есть некоторые другие проблемы, не связанные с вашим вопросом, но вы столкнетесь с нимикак только вы получите его для компиляции:

  1. Ваш ( char1 != "T" || "F") должен быть ( char1 != "T" && char1 != "F") (обратите внимание на && вместо ||)
  2. Вы читаете другойсимвол, когда вы получаете неправильный ввод, но поскольку ваш код не имеет циклов, программа завершит работу, прежде чем что-либо делать со следующим символом.
  3. Как указывает Дэвид Шварц, стоит удалить system("PAUSE")

Это довольно распространенные ошибки для новичков в C (Добро пожаловать! Я бы рекомендовал начатьс некоторыми учебниками или вводными книгами. Вот превосходный список книг и учебников по Си ).

Если вы столкнетесь с чем-то, что не можете решить самостоятельно, смело открывайте другой вопрос.

6 голосов
/ 22 декабря 2011

У вас есть код C ++:

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

Но вы пытаетесь скомпилировать его так, как если бы это было C:

gcc file.c

C ++ - это не C, и вы не должны рассматривать его какесли бы.

Попробуйте переименовать файл в file.cpp и использовать g++ вместо gcc:

g++ file.cpp
6 голосов
/ 22 декабря 2011

Это код C ++, а не C, и должен быть скомпилирован соответствующим образом. (В нем также есть множество логических ошибок, но об этом мы можем побеспокоиться позже.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...