【问题标题】:error: ',' expected (got "10") in C programming错误:','在 C 编程中预期(得到“10”)
【发布时间】:2017-08-30 03:23:31
【问题描述】:

在我问这个问题之前,我已经调试了几个小时并阅读了类似的问题帖子,但我仍然无法解决这个问题。我检查了当我定义 void drop(int size, int x_coor, int y_coor, int grid) 这个方法时发生的错误。如何解决这个错误?

这是错误:

main.c:11: error: ',' 预期(得到“10”)

#include <stdio.h>
#include <stdlib.h>

const int max_height = 4;

int height;

#define size 10
int grid[size][size];

void drop(int size, int x_coor, int y_coor, int grid);
int is_stable(int grid[size][size]);
void display(int grid[size][size]);

/*
Function to print out the 23*23 grid with given number of piles
*/

void create_InitialGrid(int total_param, char *piles[])
{
    int i, j, k, assigned;

    for (i = 0; i < size; i++)
    {
        for (j = 0; j < size; j++)
        {
            for (k = 1; k < total_param; k = k + 3)
            {

                if ((atoi(piles[k]) == i) && (atoi(piles[k + 1]) == j))
                {
                    height = atoi(piles[k + 2]);

                    grid[i][j] = height; //store value into 2D array

                    assigned = 1;
                    break;
                }
                else
                {
                    assigned = 0;
                }

            }
            if (assigned != 1)
            {
                height = 0;
                grid[i][j] = height;
            }

        }
    }

}


//Simulate a grain of sand is dropped onto the center pile of the pane

void drop(int size, int x_coor, int y_coor, int grid)
{
    .........
}

/*
Display the 2D array
*/
void display(int grid[size][size])
{
    int i, j;
    for (i = 0; i < size; i++)
    {
        for (j = 0; j < size; j++)
        {
            printf("%d", grid[i][j]);
        }
        printf("\n");
    }
}


int main(int argc, char *argv[])
{
    create_InitialGrid(argc, argv);

    printf("Initial Grid: \n");

    display(grid);

    printf("////////////////////// \n");
    drop();

    display(grid);


    return 0;
}

【问题讨论】:

  • 不要使用宏。
  • @o11c 不幸的是,你在 C 语言中没有太多选择。你不能声明一个常量来声明数组大小
  • @user7027796 这就是为什么在大多数约定中你用大写字母编写常量的原因。如果你写SIZE,问题就不会出现。无论如何要避免这样的通用词,并使用像GRID_SIZE 这样的描述性名称。还有don't use atoi
  • @LưuVĩnhPhúc 只有 3 个数字:0、1 和批次。
  • @o11c 我不明白你。试试const int SIZE = 10; int grid[SIZE][SIZE]

标签: c


【解决方案1】:
void drop(int size, int x_coor, int y_coor, int grid);

它正在转换为

void drop(int 10, int x_coor, int y_coor, int grid);

在编译器预处理步骤之后,正如您定义的#define size 10

你应该把它声明为

void drop(int , int , int , int );

或者只是在函数声明中为该变量使用不同的名称

【讨论】:

  • 感谢您的帮助。我更改了命名,现在它已修复,但还有另一个运行时错误:需要指针。
【解决方案2】:

我刚刚尝试编译您的代码,似乎#define size 宏与drop 函数中的int size 参数冲突。

这是gcc 在我的 Mac 上的输出:

temp.c:11:15: error: expected ')'
void drop(int size, int x_coor, int y_coor, int grid);
              ^
temp.c:8:14: note: expanded from macro 'size'
#define size 10
             ^
temp.c:11:10: note: to match this '('
void drop(int size, int x_coor, int y_coor, int grid);
              ^

希望修复它! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 2022-11-14
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多