2503_90718097 2025-02-19 20:32 采纳率: 100%
浏览 10
已结题

为什么这个代码vs在main函数结束的右大括号}会报错,在dev-c++不会报错

为什么这个代码vs在main函数结束的右大括号 }会报错,在dev-c++不会报错

img

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define MAX 10000

//头结点插入 
void add_to_head(int x, int l[], int r[], int idx, int date[], int head) {
    date[idx] = x;
    l[idx] = head;
    r[idx] = r[head];
    l[r[head]] = idx;
    r[head] = idx;
}

//在k位置的后面插入一个数x
void add_to_r(int k, int x, int idx, int l[], int r[], int date[]) {
    
    date[idx] = x;
    l[idx] = k;
    r[idx] = r[k];
    l[r[k]] = idx;
    r[k] = idx;
}

//在k的左边插入一个数x
void add_to_l(int k, int x, int date[], int l[], int r[], int idx) {
    date[idx] = x;
    r[idx] = k;
    l[idx] = l[k];
    r[l[k]] = idx;
    l[k] = idx;
}

//删除k位置后面的数
void remove(int k, int l[], int r[]) {
    r[k] = r[r[k]];
    l[r[k]] = k;
}

void push(int l[], int r[], int date[], int head) {
    head = r[head];
    for (int i = head; i != 1; i = r[i]) {
        //printf("%d ",i);
        printf("%d ", date[i]);
    }
}

int main() {
    int l[MAX], r[MAX], date[MAX];
    int head, idx, last;
    head = 0; last = 1; idx = 2;
    l[1] = 0; r[0] = 1;
    int m;
    scanf("%d", &m);
    for (int i = 0; i < m; ++i) {
        char op[2];
        scanf(" %s", &op);
        if (strcmp(op, "L") == 0) {
            int x;
            scanf("%d", &x);
            add_to_head(x, l, r, idx, date, head);
            idx++;
        }
        else if (strcmp(op, "R") == 0) {
            int x;
            scanf("%d", &x);
            add_to_r(l[1], x, idx, l, r, date);
            idx++;
        }
        else if (strcmp(op, "IL") == 0) {
            int k, x;
            scanf("%d %d", &k, &x);
            add_to_l(k + 1, x, date, l, r, idx);
            idx++;
        }
        else if (strcmp(op, "IR") == 0) {
            int k, x;
            scanf("%d %d", &k, &x);
            add_to_r(k + 1, x, idx, l, r, date);
            idx++;
        }
        else if (strcmp(op, "D") == 0) {
            int k;
            scanf("%d", &k);
            remove(k + 1, l, r);
        }
    }
    push(l, r, date, head);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-02-19 20:32
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到的问题是,VS编译器在main函数结束的右大括号}报错,而在Dev-C++中却没有报错。这是因为VS和Dev-C++的编译器实现不同。

    在VS中,编译器会对代码进行严格的语法检查,如果发现语法错误,会报错。在你的代码中,可能存在一些语法错误,导致VS报错。

    在Dev-C++中,编译器可能会对语法错误进行忽略或警告,而不是报错。这可能是因为Dev-C++的编译器实现较为宽松。

    为了解决这个问题,你可以尝试以下几点:

    1. 检查代码中的语法错误,确保代码正确无误。
    2. 在VS中,启用语法检查选项,例如在项目属性中设置“语法检查”为“严格”。
    3. 如果你使用的是VS2015或更高版本,可以尝试使用VS的“Code Analysis”功能来检查代码中的语法错误。

    代码示例

    以下是一个简单的示例代码,演示如何在VS中启用语法检查:

    #include <stdio.h>
    
    int main() {
        printf("Hello, World!\n");
        return 0;
    }
    

    在项目属性中,设置“语法检查”为“严格”,然后重新编译代码。如果代码中存在语法错误,VS将报错。

    结论

    总的来说,VS和Dev-C++的编译器实现不同,VS更严格地检查代码的语法错误,而Dev-C++可能会忽略或警告语法错误。为了解决问题,你可以尝试检查代码中的语法错误,并启用VS的语法检查选项。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 创建了问题 2月19日