【问题标题】:Can't compile C++ program无法编译 C++ 程序
【发布时间】:2015-05-26 21:56:25
【问题描述】:

这是代码......

#include <iostream>

int main()
{
    cout << "WELCOME TO C++ PROGRAMMING";
    return 0;
}

当我去终端并传递命令时..

g++ hello.cpp

它显示...

hello.cpp: In function ‘int main()’:
hello.cpp:4:2: error: ‘cout’ was not declared in this scope
  cout << "WELCOME TO C++ PROGRAMMING";
  ^
hello.cpp:4:2: note: suggested alternative:
In file included from hello.cpp:1:0:
/usr/include/c++/4.8/iostream:61:18: note:   ‘std::cout’
   extern ostream cout;  /// Linked to standard output

那是什么原因呢?我该怎么办?

【问题讨论】:

  • 它被称为std::cout
  • 您的代码显然不会在您的问题中产生错误!请注意,错误中的字符串在您的代码中的任何地方都找不到。
  • So what's the reason? And what should I do? 可能会停止阅读 80 年代末或 90 年代初的旧 C++ 书籍。
  • 您的代码 still 显然不会在您的问题中产生错误! 请注意,该字符串位于第 5 行,而您的错误表明它在第 4 行。我真的真的不喜欢人们从其他一些代码中发布错误消息。

标签: c++ linux ubuntu terminal


【解决方案1】:

cout 位于 std 命名空间中。

#include <iostream>

int main()
{
    std::cout << "Welcome";
    return 0;
}

【讨论】:

    【解决方案2】:

    为避免名称冲突,C++ 库包含在一个名为std命名空间 中。因此,要编译您的程序,您可以添加:

    using namespace std;
    

    在程序的顶部,您可以在标准库的每个“对象”前面加上 std:::

    std::cout << "Welcome";
    

    【讨论】:

    • 请不要给初学者using namespace std这个不好的建议。
    • 即便如此为什么不打印“欢迎”?
    • @juanchopanza 我同意底线,但是,我们都是从这样做开始的,不是吗?通过积累经验,我们慢慢了解到这实际上是个坏主意。但从经验来看,学习 c++ 已经够难的了,让他们自己动手吧。
    • 但不是在终端!
    • @Myni 将其更改为 std::cout &lt;&lt; "Welcome" &lt;&lt; std::endl;std::endl 具有刷新输入(或输出取决于您从哪里查看)的副作用。由于您的程序在不久之后退出,因此无论如何都应该打印它,但我不知道您在什么环境中运行您的可执行文件。试一试。
    【解决方案3】:

    你应该在 cout 之前使用 std

    【讨论】:

      【解决方案4】:

      你应该有:

      std::cout << "Welcome";
      

      【讨论】:

      • 但是为什么不打印“欢迎”?
      • 我刚刚注意到您还有另一个问题....您的代码中有“欢迎”,并且您收到“欢迎使用 C++ 编程”的错误...您确定您之前保存过您的文件吗?重新编译?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多