【问题标题】:Why does the console open when I try to run a compiled C program .exe?为什么当我尝试运行已编译的 C 程序 .exe 时控制台会打开?
【发布时间】:2016-01-18 17:39:01
【问题描述】:

很多人都有这个问题"How do you keep the console from closing after the program is done in C",但我的问题有点不同。当我运行 .exe 时,一个窗口打开和关闭的速度非常快,但是 为什么窗口首先打开

我的意思是...我知道如果我尝试打印某些内容,则需要一个控制台窗口,但即使我在控制台窗口下方运行示例代码,也会弹出一个控制台窗口,我不知道为什么。

int main() {

    int i;
    for (i=0; i<100; ++i) {
        ++i;
    }
}

【问题讨论】:

  • 如果你用控制台子系统构建程序,你会得到一个控制台。如果你用 GUI 子系统构建它,你不会得到一个控制台。如何构建取决于您的工具链。
  • 您的应用程序会打开一个控制台,因为您已经创建了一个控制台应用程序。如果这不是您想要的,请创建一个不同类型的项目。
  • “但是即使我在控制台窗口下面运行示例代码,也会弹出一个控制台窗口,我不知道为什么。” 可能是因为您从您的IDE。如果您想在最后一个右大括号 (}) 处停止,请在此处设置断点。
  • 这与编程语言无关,而是Windows。
  • @Olaf 这与 windows 有什么关系??

标签: console window exe


【解决方案1】:

您很可能已将代码编译为控制台程序(这在 C++ 中很常见)。因此,控制台将打开以运行您的程序。控制台不仅用于输入和输出,还是程序运行的“shell”。

一些 GUI C++ 程序不会打开控制台,但其中一些仍会在后台打开控制台窗口,并且 GUI 将从那里启动。

长话短说,这不是您需要担心的事情;控制台不仅仅是输入和输出。

M

【讨论】:

    【解决方案2】:

    因为程序会执行您告诉它执行的代码,但是由于这个工作对于现在的 CPU 来说非常容易,所以它可能只需要几毫秒就可以完成工作,所以它可以快速完成工作并终止(弹出控制台窗口的原因out ) 并显示控制台窗口,以便向您显示程序执行的结果。要告诉程序停止并从用户那里获取一个字符,只需使用这个:

    #include <conio.h> /* In visual studio */
    int main() {
    
        int i;
        for (i=0; i<100; ++i) {
            ++i;
        }
        getch();
        return 0; /* By the way don't forget this, It may not give error if you omit this line but its good to write this line because it tells the OS how the program did its job */
    }
    

    但是,如果您不想使用控制台,您应该尝试使用 Win32 Api 在 C 中进行 gui 编程,在控制台程序中使用 WinMain 而不是 main

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多