YKPG 2022-07-28 15:11 采纳率: 0%
浏览 361

vscode使用#define简单宏定义时,编译结果与宏定义不符

问题遇到的现象和发生背景

使用vscode编写c程序时遇到的问题
最初是
#define ROW 3
#define COL 3
改为为
#define ROW 10
#define COL 10
后,board数组的大小为什么仍然为3x3呢

img

img

问题相关代码,请勿粘贴截图

#define ROW 10
#define COL 10

#include <stdio.h>

void init_board(char board[ROW][COL]);
void display_board(char board[ROW][COL]);

#include "game.h"

void init_board(char board[ROW][COL])
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{

    for (j = 0; j < ROW; j++)
    {
        board[i][j] = ' ';
    }
}

}

void display_board(char board[ROW][COL])
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{

    for (j = 0; j < COL; j++)
    {
        printf(" %c ", board[i][j]);
        if (j < (COL - 1))
        {
            printf("|");
        }
    }
    printf("\n");
    if (i < (ROW - 1))
    {
        for (j = 0; j < COL; j++)
        {
            printf("---");
            if (j < (COL - 1))
            {
                printf("|");
            }
        }
    }
}

}

//三子棋
#include "game.h"
//#include "game.c"

void menu()
{
printf("*****************************\n");
printf("
1.开始游戏 0.退出游戏 ***\n");
printf("********************************\n");
}

void game()
{
char board[ROW][COL] = {0};
init_board(board);
display_board(board);
}

void test()
{
menu();
int input = 0;
do
{
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
}

int main()
{
test();
return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-07-28 21:58
    关注

    最初是 #define ROW 3 #define COL 3 改为为 #define ROW 10 #define COL 10后,需重新编译。修改如下,供参考:

    #include <stdio.h>
    #include "game.h"
    
    #define ROW 10
    #define COL 10
    
    void init_board(char board[ROW][COL]);
    void display_board(char board[ROW][COL]);
    
    void init_board(char board[ROW][COL])
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < ROW; i++)
        {
            for (j = 0; j < COL; j++) //for (j = 0; j < ROW; j++)
            {
                board[i][j] = ' ';
            }
        }
    }
    
    void display_board(char board[ROW][COL])
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < ROW; i++)
        {
             for (j = 0; j < COL; j++)
             {
                 printf(" %c ", board[i][j]);
                 if (j < (COL - 1))
                 {
                     printf("|");
                 }
             }
             printf("\n");
             if (i < (ROW - 1))
             {
                 for (j = 0; j < COL; j++)
                 {
                     printf("---");
                     if (j < (COL - 1))
                     {
                         printf("|");
                     }
                 }
             }
             printf("\n");
        }
    }
    
    //三子棋
    #include "game.h"
    //#include "game.c"
    
    void menu()
    {
        printf("*****************************\n");
        printf(" ***1.开始游戏 0.退出游戏***\n");
        printf("*****************************\n");
    }
    
    void game()
    {
        char board[ROW][COL] = {0};
        init_board(board);
        display_board(board);
    }
    
    void test()
    {
        menu();
        int input = 0;
        do{
           printf("请选择:>");
           scanf("%d", &input);
           switch (input)
           {
             case 1:
                    game();
                    break;
             case 0:
                    printf("退出游戏\n");
                    break;
             default:
                    printf("选择错误,请重新选择\n");
                    break;
           }
        } while (input);
    }
    
    int main()
    {
        test();
        return 0;
    }
    
    

    img

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 7月28日