C++ 未定义对'的引用;标准:cout';
例如:C++ 未定义对'的引用;标准:cout';,c++,c++11,gcc,cout,C++,C++11,Gcc,Cout,例如: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } #包括 使用名称空间std; int main() { 无法使用以下命令编译程序: g++ -Wall -Wextra -Werror -c main.cpp -o main.o ^^^^^^^^^^^^^^^^^^^^ <- For listing all warnings
#include <iostream>
using namespace std;
int main()
{
cout << "Hola, moondo.\n";
}
#包括
使用名称空间std;
int main()
{
无法使用以下命令编译程序:
g++ -Wall -Wextra -Werror -c main.cpp -o main.o
^^^^^^^^^^^^^^^^^^^^ <- For listing all warnings when your code is compiled.
是的,使用g++
命令对我有效:
g++ my_source_code.cpp
生成文件
如果您使用的是makefile,并且您最终像我一样来到了这里,那么这可能就是您正在寻找的或:
如果您使用的是makefile,则需要更改cc
,如下所示
my_executable : main.o
cc -o my_executable main.o
到
假设code.cpp
是源代码,以下内容不会引发错误:
make code
./code
这里,第一个命令编译代码并创建一个同名的可执行文件,第二个命令运行它。在这种情况下,不需要指定“代码> G++< /COD>关键字”。
尝试“代码> G++<代码>,而不是<代码> GCC < /C> >。<代码> GCC < /C> > C,并且不允许您访问C++标准库。我解决了这个问题。据我所知,GCC是Gnu编译器集合的首字母缩写。它不应该在需要时调用g++编译器吗?因此命令GCC调用c编译器…@D1X,这是因为您单独调用了链接器。当您编写GCC-o edit main.o
时,它不知道main.o
正在运行需要C++启动库。RTFM Q:在需要时不应该调用G++编译器吗?答:不需要GCC调用GoFrTRAN、GJC……等。它可以用来编译C++代码,但它不与C++库连接。<代码> GCC < /C> >如果只添加<代码> -LSTDC++< /COD>,请务必工作。请始终包含-Wall
在给出gcc/g++命令行示例时-这有助于让noobs在早期养成良好习惯,并为每个人节省更多的时间;-)从什么时候开始iostreams和std::cout
成为标准模板库的一部分?为什么需要-Werror?我已经修改了文档,如果我理解得很好,我会将警告设置为错误,会使我的项目不容易编译。@D1X:因为程序员有一个讨厌的习惯,就是忽略警告。实际上,-Wall
甚至-Wextra
警告的所有内容要么是一个非常真实的问题,要么是可以很容易修复的草率编码。这里的信息是进入一个habi如果你认为编译器警告是一个有用的指针,那么你的代码可以被改进,而不是讨厌。这里有上百个问题,如果OP使用了<代码>墙-WUTAUT/代码>,那么就没有必要了。<代码> - Werror <代码>只是加强了。然后运行<<代码> /A.OUT/<代码>另一个很好的快速介绍,使实用程序。
gcc main.cpp -lstdc++ -o main.o
g++ my_source_code.cpp
my_executable : main.o
cc -o my_executable main.o
CC = g++
my_executable : main.o
$(CC) -o my_executable main.o
make code
./code