我正在编写一个游戏,现在我为了组织起见而试图将我拥有的一个文件分解为多个。我遇到了一个问题,但我并不确定如何修复。最初,我在main中定义了一个地图,如下所示:
char const *map[]={
" ------------- ",
"|......|......|",
"|.............|",
"|......---.---|",
"|---.---...|..|",
"|..........|..|",
"|..........|..|",
"|.............|",
"|..........|..|",
" ------------- ",
};
这很好用。现在我已将声明移动到名为" map.h":
的文件中extern const char *map[];
在名为" map.c":
的文件中的实际定义#include "map.h"
*map = {
" ------------- ",
"|......|......|",
"|.............|",
"|......---.---|",
"|---.---...|..|",
"|..........|..|",
"|..........|..|",
"|.............|",
"|..........|..|",
" ------------- ",
};
这给了我一个错误:" map#34;
的冲突类型以及许多警告:"从不兼容的指针类型初始化[-Wincompatible-pointer-types]" -------------""
和:"标量初始化程序中的多余元素"对于那之后的每一行。
如果我删除" map"中的解引用运算符在map.c中,它给了我"初始化元素在加载时不可计算"。 然后我想我可以通过在map.h中定义数组来解决这个问题,但当然这会给我包含map.h in的每个文件的多个定义错误。
有没有人知道实现这个/我做错了什么的方法?
谢谢,Nic
答案 0 :(得分:0)
你的头文件map.h
很好,即使它应该有一个包含守卫。添加一个包含保护就像在头文件顶部的自己的行上添加#pragma once
一样简单。
您的源文件map.c
有一个需要修复的语法错误。
const char *map = {
/* ... */
};