c - 数组类型有不完整的元素类型错误
问题描述
我正在尝试编译一个程序并且相当缺乏经验(边走边自学)。我正在努力解决的一件事是:
overland.h:62:37: 错误:数组类型有不完整的元素类型'struct sect_color_type'</p>
extern const struct sect_color_type sect_show[];
const struct sect_color_type sect_show[] = {
/* Sector Type Color Symbol Description Passable? Move R G B */
{ SECT_INDOORS, "&x", " ", "indoors", FALSE, 1, 0, 0, 0 },
{ SECT_CITY, "&Y", ":", "city", TRUE, 1, 255, 128, 64 },
{ SECT_FIELD, "&G", "+", "field", TRUE, 1, 141, 215, 1 },
{ SECT_FOREST, "&g", "+", "forest", TRUE, 2, 0, 108, 47 },
{ SECT_HILLS, "&O", "^", "hills", TRUE, 3, 140, 102, 54 },
{ SECT_MOUNTAIN, "&w", "^", "mountain", TRUE, 5, 152, 152, 152 },
{ SECT_WATER_SWIM, "&C", "~", "shallow water", TRUE, 2, 89, 242, 251 },
{ SECT_WATER_NOSWIM, "&B", "~", "deep water", TRUE, 2, 67, 114, 251 },
{ SECT_AIR, "&x", "?", "air", FALSE, 1, 0, 0, 0 },
{ SECT_UNDERWATER, "&x", "?", "underwater", FALSE, 5, 0, 0, 0 },
{ SECT_DESERT, "&Y", "~", "desert", TRUE, 3, 241, 228, 145 },
{ SECT_RIVER, "&B", "~", "river", TRUE, 3, 0, 0, 255 },
{ SECT_OCEANFLOOR, "&x", "?", "ocean floor", FALSE, 4, 0, 0, 0 },
{ SECT_UNDERGROUND, "&x", "?", "underground", FALSE, 3, 0, 0, 0 },
{ SECT_JUNGLE, "&g", "*", "jungle", TRUE, 2, 70, 149, 52 },
{ SECT_SWAMP, "&g", "~", "swamp", TRUE, 3, 218, 176, 56 },
{ SECT_TUNDRA, "&C", "-", "tundra", TRUE, 2, 54, 255, 255 },
{ SECT_ICE, "&W", "=", "ice", TRUE, 3, 133, 177, 252 },
{ SECT_OCEAN, "&b", "~", "ocean", FALSE, 1, 0, 0, 128 },
{ SECT_LAVA, "&R", ":", "lava", FALSE, 2, 245, 37, 29 },
{ SECT_SHORE, "&Y", ".", "shoreline", TRUE, 3, 255, 255, 0 },
{ SECT_TREE, "&g", "^", "impass forest", FALSE, 10, 0, 64, 0 },
{ SECT_STONE, "&W", "^", "impas mountain", FALSE, 10, 128, 128, 128 },
{ SECT_QUICKSAND, "&g", "%", "quicksand", FALSE, 10, 128, 128, 0 },
{ SECT_WALL, "&P", "I", "wall", FALSE, 10, 255, 0, 255 },
{ SECT_GLACIER, "&W", "=", "glacier", FALSE, 10, 141, 207, 244 },
{ SECT_EXIT, "&W", "#", "exit", TRUE, 1, 255, 255, 255 },
{ SECT_TRAIL, "&O", ":", "trail", TRUE, 1, 128, 64, 0 },
{ SECT_BLANDS, "&r", ".", "blasted lands", TRUE, 2, 128, 0, 0 },
{ SECT_GRASSLAND, "&G", ".", "grassland", TRUE, 1, 83, 202, 2 },
{ SECT_SCRUB, "&g", ".", "scrub", TRUE, 2, 123, 197, 112 },
{ SECT_BARREN, "&O", ".", "barren", TRUE, 2, 192, 192, 192 },
{ SECT_BRIDGE, "&P", ":", "bridge", TRUE, 1, 255, 0, 128 },
#ifdef DRAGONFLIGHT
{ SECT_ROAD, "&Y", ":", "road", TRUE, 1, 215, 107, 0 },
{ SECT_LANDING, "&R", "#", "landing", TRUE, 1, 255, 0, 0 }
#else
{ SECT_ROAD, "&Y", ":", "road", TRUE, 1, 215, 107, 0 }
#endif
};
任何帮助将不胜感激。
编辑:我在 overland.h 中找到了定义
struct sect_color_type
{
sh_int sector; /* Terrain sector */
char * color; /* Color to display as */
char * symbol; /* Symbol you see for the sector */
char * desc; /* Description of sector type */
bool canpass; /* Impassable terrain */
int move; /* Movement loss */
sh_int graph1; /* Color numbers for graphic conversion */
sh_int graph2;
sh_int graph3;
};
解决方案
在 C 中,结构不像 Python 或其他语言中的字典。结构是专门定义的具有命名和大小字段的分组内存块。您将结构视为collection,但事实并非如此。
在初始化该数组之前,您需要在某处定义一个结构,如下所示:
typedef struct
{
int sectorType;
char* Color;
char Symbol; // you seem to only need a single character for this field according to your example.
char* Description;
int Passable;
int Move;
int rgb[3];
} sect_color_type;
注意:我将 rgb 移动到结构内它自己的整数数组中。
推荐阅读
- python - 在 pandas 列/索引上应用 NLTK 词干提取
- r - 不能做假期矢量图
- google-sheets - 谷歌表格查询多条件持续时间总和
- r - R循环,错误:“需要TRUE / FALSE的缺失值”
- java - ubuntu 18 上的 ionic build android 出现错误
- mocking - 如何使用 phpunit 测试 IMAP 操作?
- sql - 表版本控制 - DML 和 DDL 跟踪更改并回滚到以前的版本
- javascript - 如何让外部函数(在 javascript 中)调用 html 中的 ID?
- webpack - VueJS 无法挂载组件
- ios - 无法弄清楚我的第一个 Appium ruby 测试中的错误