我正在尝试编译一个程序,但相当缺乏经验(一边自学)。我正在努力解决的一件事是:
overland.h:62:37:错误:数组类型具有不完整的元素类型“struct sect_color_type”
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 或其他语言中的字典不同。结构是专门定义的分组内存块,具有命名和大小字段。您将结构视为集合,但它们不是。
在初始化该数组之前,您需要在某处定义一个结构,如下所示:
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 移动到结构内它自己的整数数组中。
关于c - 数组类型有不完整的元素类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334476/