我想在头文件中定义指向设定值的字符数组的指针。 基本上 - 我想在头文件中声明一个棋盘。
这样的事情会起作用,还是应该使用#define? 谢谢。
#ifndef myHeader
#define myHeader
typedef *char[8][8] Chessboard;
#endif
编辑:
我不得不承认我正在练习即将进行的测试,这只是一项旧任务(来自之前的一项测试)。 经过一些思考和研究头文件的行为后,我发现了
char array[8][8];
char*** Chessboard = (char***) malloc (sizeof (char**));
*(Chessboard) = array;
可以工作 - 但是,我应该声明一个类型,并且不知道如何做到这一点。
澄清 - 我想定义一个类型“Chessboard”,这是一个指向8x8数组的指针。
答案 0 :(得分:2)
我想定义一个类型“Chessboard”,它是一个指向8x8数组的指针。
// .h
typedef char (*Chessboard_T)[8][8];
extern Chessboard_T Chessboard_Var;
// .c
static char board[8][8];
Chessboard_T Chessboard_Var = &board;
// Usage example
void foo() {
(*Chessboard_Var)[0][4] = 'K';
}
通常不会在typedef中隐藏指针。
捕获状态的更常见解决方案是使用Chessboard
作为结构。例如:
// Chessboard.h
typedef struct {
char board[8][8];
unsigned move_count;
int en_pass;
int castle;
int *history;
// etc.
} Chessboard;
// Various functions that operate with a Chessboard
Chessboard *Chessboard_Create(void);
Chessboard_Destroy(Chessboard *cb);
Chessboard_This(..);
Chessboard_That(..);
...