将结构指针或数组作为函数参数传递

Sna*_*Doc 0 c struct typedef function

我有一个类似于这样的typedef结构:

typedef struct {
    int col;
    int row;
} move_t;
Run Code Online (Sandbox Code Playgroud)

我正在尝试将一个类型的数组传递move_t给函数作为要填充的排序缓冲区......就像这样:

void generate_valid_moves(int fc, int fr, move_t* moves, int limit);
Run Code Online (Sandbox Code Playgroud)

要么

void generate_valid_moves(int fc, int fr, move_t moves[], int limit);
Run Code Online (Sandbox Code Playgroud)

两者都会产生一个模糊的gcc错误:

moves.h:43: error: expected declaration specifiers or ‘...’ before ‘move_t’
moves.h:887: error: conflicting types for ‘generate_valid_moves’
moves.h:43: note: previous declaration of ‘generate_valid_moves’ was here
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除typedef,只是使它成为一个普通的结构等...都会导致类似的错误.感觉很基本,我知道我错过了一些东西......

我的函数原型和实现的签名绝对匹配......所以错误的一部分甚至更奇怪.

我的目标是创建一个数组move_t,然后将其传递给此函数以填充move_t.然后调用者使用填充的move_t缓冲区填充.

Bar*_*mar 6

typedef需求是之前的函数原型是指类型.C代码按顺序处理,在定义之前不能引用名称.因此,如果您没有首先使用结构定义,那么它认为move_t是一个被声明的变量,但它需要一个类型说明符.