Простой код C ++ не работает - PullRequest
2 голосов
/ 06 ноября 2008

Этот очень простой код дает мне массу ошибок:

#include <iostream>
#include <string>

int main() {
    std::string test = " ";
    std::cout << test;
}

Я попытался скомпилировать его в Linux, набрав gcc -o simpletest simpletest.cpp в консоли. Я не понимаю, почему это не работает. Что происходит?

Ответы [ 7 ]

9 голосов
/ 06 ноября 2008

Попробуйте использовать «g ++» вместо «gcc».

8 голосов
/ 06 ноября 2008

Чтобы добавить к тому, что сказали другие: g++ - это компилятор GNU C ++. gcc - это коллекция компиляторов GNU (, а не компилятор GNU C, как полагают многие). gcc служит интерфейсом для g++ при компиляции исходных текстов C ++. gcc может компилировать C, C ++, Objective-C, Fortran, Ada, ассемблер и др.

Причина, по которой не удается выполнить компиляцию с gcc, заключается в том, что вам необходимо создать ссылку в стандартной библиотеке C ++. По умолчанию g++ делает это, а gcc - нет. Чтобы связать стандартную библиотеку C ++ с помощью gcc, используйте следующее:

gcc -o simpletest simpletest.cpp <b>-lstdc++</b>
5 голосов
/ 06 ноября 2008

Попробуйте с g++ -o simpletest simpletest.cpp. gcc - это компилятор C, а g ++ - это компилятор C ++, который также связывает необходимые библиотеки C ++.

Кроме того, вам нужно будет добавить return 0; в конце вашей функции main().

5 голосов
/ 06 ноября 2008

Попробуйте:

g++ -o simpletest simpletest.cpp
2 голосов
/ 06 ноября 2008

если ваш компилятор требователен, вы можете добавить, что все важные return 0; в конце есть

0 голосов
/ 16 апреля 2012

g ++ был верным ответом и для меня, я проголосовал за него, спасибо.

Но мой код, немного неуклюжий, который я использую с 13 февраля 1998 года (первый комментарий) для расчета эффективной валовой заработной платы и удержания для няни нашего ребенка, был ОЧЕНЬ прост, даже для g ++. В приведенном выше примере мой динозавр, совместимый со вторым выпуском Stroustrup, сказал:

// too simple!

#include <iostream.h>
#include <stdlib.h>

main() {
    cout << "Hello World!" << endl;
}

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

Пиная, новая школа, я сейчас использую: // достаточно просто

#include <iostream>
#include <stdlib.h>

int main(int argc, char* argv[] ) {
    std::cout << "Hello World!" << std::endl;
//  TODO - this ought to return success, 0
}

У исходного спрашивающего был std :: cout и использовалась строка из

 <string>...  

«простой» - это относительный термин ...

Bill

0 голосов
/ 06 ноября 2008

Вы объявили свой main() как возвращающий int, но у вас нет заявления о возврате. Добавьте return 0; и посмотрите, поможет ли это. Если это не решит вашу проблему, попробуйте отредактировать ваше сообщение, включив в него несколько характерных строк об ошибках, которые вы получили, и, возможно, мы сможем вам помочь.

...