Я плохо знаком с программированием на C++, и я пытаюсь сделать свое первое осуществление на Mac с помощью gcc в терминале.
К сожалению, я не могу скомпилировать из-за проблем, связанных с iostream. С простой программой как:
#include <iostream>
int main()
{
std::cout << "hello world";
std::cout << endl;
return 0;
}
это дает мне ошибку:
error: ‘endl’ was not declared in this scope
удаление суда <<endl; строка дает мне эти ошибки:
Undefined symbols:
"___gxx_personality_v0", referenced from:
___gxx_personality_v0$non_lazy_ptr in cceBlyS2.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in cceBlyS2.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_main in cceBlyS2.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in cceBlyS2.o
"std::cout", referenced from:
__ZSt4cout$non_lazy_ptr in cceBlyS2.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Очевидно, что iostream заголовок правильно не связан. Я попробовал" <"iostream.h">" и "iostream.h" без успеха.
У кого-либо есть какая-либо подсказка, которая могла помочь мне?Спасибо!
Вам нужно использовать std :: endl;
- вся стандартная библиотека находится в пространстве имен std
. Также похоже, что вы использовали gcc
вместо g ++
в командной строке. Последний автоматически выполняет шаги, необходимые для правильной компоновки C ++.
Вам просто нужно использовать std :: endl;
. Или, что еще лучше, воспользуйтесь удобной директивой using
:
#include <iostream>
using namespace std;
int main()
{
cout << "hello world";
cout << endl;
return 0;
}
endl;
подпадает под пространство имен std
ваши 2 варианта следующие:
1) объявление вашего пространства имен, например
#include <iostream>
using namespace std;
int main() {
cout << "hello world";
cout << endl;
return 0;
}
или используя std :: endl;
например
std::cout << "hello world";
std::cout << std::endl;
return 0;
Посмотрите, какой из них вам подходит. Я рекомендую 1) (убедитесь, что я не использовал std :: cout
, потому что я уже объявил свое пространство имен), поскольку это помогает сократить количество вводимых каждый раз std ::
.