我是C++编程的新手,我尝试在终端上使用gcc在mac上进行我的第一次练习.
不幸的是,由于与iostream相关的问题,我无法编译.使用简单的程序:
#include <iostream>
int main()
{
std::cout << "hello world";
std::cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
error: ‘endl’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
删除cout << endl; line给了我这些错误:
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
Run Code Online (Sandbox Code Playgroud)
很明显,iostream标头没有正确链接.我试过"<"iostream.h">"和"iostream.h"没有成功.
有人有任何可以帮助我的提示吗?谢谢!
endl;属于std命名空间
您的2个选项如下:
1)声明你的命名空间,例如
#include <iostream>
using namespace std;
int main() {
cout << "hello world";
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或使用std::endl;例如
std::cout << "hello world";
std::cout << std::endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
看看哪一个适合你.我建议1)(检查我没有这样做,std::cout因为我已经声明了我的命名空间)因为它有助于std::每次减少输入.
你只需要使用std::endl;. 或者,更好的是,使用方便的using指令:
#include <iostream>
using namespace std;
int main()
{
cout << "hello world";
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)