首页 > 解决方案 > 在 VSCode 上使用 GCC(9.2.0) 编译的 .exe 文件在执行时未运行

问题描述

我在 Stack Oveflow 上搜索了一个与我类似的问题,发现了一个案例,但它与我的完全不同。所以,这是我的问题。

我正在使用已链接到 MigGW GCC 编译器 (v.9.2.0) 的 Visual Studio Code 来编译和执行 c 和 c++ 程序。到目前为止,我使用 MinGW 创建的所有可执行文件都可以顺利运行。除了少数节目。
我无法弄清楚问题所在。如果没有首先初始化变量,我不会执行任何操作并且没有歧义。尽管如此,编译成功完成,但 .exe 文件拒绝工作。我尝试运行它cmd,但 VSCodeintegrated terminal的 exe 文件仍然无法运行。

(我使用tasksVSCode 中的文件来创建exe文件)

这是我的代码:

#include<iostream>
#include<string.h>

using namespace std;

void swap(int *p1, int *p2)
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

int main()
{
    int n1, n2;
    int choice, err;
    char ch;
    cout << "\nHello\n";
    do
    {
        cout << "\nChoose:\n";
        cout << "1) Call by value.\n";
        cout << "2) Call by reference (addresses).\n";
        cout << "3) Call by reference (pointers).\n";
        cout << "4) Exit.\n";
        cin >> choice;
        try
        {
            if(isalpha(choice))
                throw choice;
            else
            {
                cout << "Enter n1: ";
                cin >> n1;
                cout << "Enter n2: ";
                cin >> n2;

                switch(choice)
                {
                    case 1:
                        swap(n1, n2);           //call by value
                        break;
                    case 2:
                        swap(&n1, &n2);         //call by reference (addresses)
                        break;
                    case 3:
                        //swap();               //call by reference (pointers)
                        cout << "\nProper\n";
                        break;
                    case 4:
                        exit(0);
                        break;
                    default:
                        cout << "\nWrong option.\n";
                        break;
                }
                cout << "After swapping: \n";
                cout << "n1 = " << n1 << "\tn2 = " << n2 << endl;
            }
        }
        catch(int err)
        {
            cout << "\nEnter a valid option:\n";
        }
        cout << "Press Y to run again.\n";
        cin >> ch;
    }while(ch =='y' || ch == 'Y');

    return 0;
}

有人可以告诉我:

  1. 为什么exe不运行?
  2. 以后如何避免此类问题?我是否以某种方式编写代码,或者我还能做什么?

(这不是我遇到此问题的唯一代码。)

标签: c++visual-studio-codemingwexe

解决方案


推荐阅读