我正在制作游戏,我的程序的当前结构如下......
我遇到的问题是我在init_game.c
中有一个功能,用必要的数据初始化播放器板,一旦我有这些初始化的板,我需要the_game.c
来使用这些初始化董事会(来自init_game.c
)。
我对如何使用extern
编辑:澄清 - 我想知道如何在我的程序结构中使用extern
关键字,以允许我使用初始化的播放器2D char
数组(在文件init_game.c
中初始化,但首先在attributes.h
文件中定义)在文件the_game.c
在下面添加了一张图片,以澄清我的问题...
答案 0 :(得分:1)
这清楚地表明您的程序设计存在缺陷。然后,正确的解决方案是修复程序设计,而不是使用全局变量实现意大利面条编码。
使用它的最好方法是使用面向对象的设计,通过创建“类”或“ADT”或“代码模块”(这些东西在C中基本上意味着相同的东西,因为没有类关键字)。每个这样的类都包含一个.h文件和一个.c文件。使用面向对象的概念来保持类的自主性,只执行特定任务而不关心世界其他地方。使用私有封装并将所有被视为公共的内容放在.h文件中。
答案 1 :(得分:0)
在init_game.c
中,声明全局变量,
char player_board[BOARD_SIZE][BOARD_SIZE];
char enemy_board[BOARD_SIZE][BOARD_SIZE];
任何包含attributes.h
的文件都可以访问这些数组,前提是该文件没有声明另一个具有相同名称的变量。
在main
中,您需要确保在调用使用全局数组的init_game.c
中的任何函数之前从the_game.c
调用初始化函数。