【问题标题】:How to use cout and cin without #include in C++?如何在 C++ 中使用没有#include 的 cout 和 cin?
【发布时间】:2020-12-02 07:26:54
【问题描述】:

我想用 C++ 编写一个没有#include 的程序,我不想在我的程序中使用 printf 和 scanf。

我可以在没有#include 的情况下在我的程序中使用 printf 和 scanf:

extern "C"
{
    int printf(const char *format, ...);
    extern int scanf(const char *format, ...);
}

但是如果没有#include,我不能在我的程序中使用 cout 和 cin。

【问题讨论】:

  • 请问您为什么要这样做?
  • std::cinstd::cout 不是函数,它们是继承层次结构中具有模板化类型的对象。它们不是您可以为其生成原型的简单函数,您绝对需要标头。
  • 所以我猜它终于发生了......世界已经疯了。
  • @nada 这个hello world示例没有一个#include,它使用std::cout :D godbolt.org/z/cPcW83
  • @AyxanHaqverdili >22k 行非标准代码。更改编译器,它根本不起作用。事实上,您的评论和链接可以很好地回答这个问题。

标签: c++ cin cout


【解决方案1】:

如何在C++中使用不带#include的cout和cin?

没有标准的方法来做到这一点。 std::coutstd::cin 是实现定义类的变量。获取这些类定义的唯一方法是从标准头文件中包含它们。

【讨论】:

  • 有点技术含量高:这不是实现定义的,而是实现特定的。在标准中,实现定义意味着实现必须记录它的作用。
【解决方案2】:

对这个有点愚蠢(恕我直言)的问题的另一个有点愚蠢的答案是在编辑器中打开#include,然后将该代码剪切并粘贴到您自己的 C++ 文件中。然后对原始标头代码中的所有#include 语句重复此过程并继续重复,直到您的源文件中实际包含所有代码。 结果:没有#include 语句的(非常长的)工作代码。 (我确实有幽默感)。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 2016-06-30
    • 2011-12-07
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多