将字符串数组定义从Main移动到另一个文件

时间:2016-04-11 21:34:40

标签: c

我正在编写一个游戏,现在我为了组织起见而试图将我拥有的一个文件分解为多个。我遇到了一个问题,但我并不确定如何修复。最初,我在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

1 个答案:

答案 0 :(得分:0)

你的头文件map.h很好,即使它应该有一个包含守卫。添加一个包含保护就像在头文件顶部的自己的行上添加#pragma once一样简单。

您的源文件map.c有一个需要修复的语法错误。

const char *map = {
    /* ... */
};