我在名为 global.c 的文件中定义了一个结构数组,以便我希望可以从其他文件进行访问。
global.c:
#include "global.h"
typedef struct NameMap {
const char *from;
const char *to;
} NameMap;
NameMap nameMap[] = {
{"blah", "blah"},
{"blah", "blah"},
....,
....,
};
在文件 global.h 中,我有行
extern NameMap nameMap[]
,但是在另一个文件(例如 main.c)中,即使我 #include "global.h"
并正确链接,我在编译 global.h 时也会收到错误 Unknown type name NameMap
。
我怎样才能解决这个问题?我想从 main.c 访问 NameMap。
nameMap
声明。typedef struct NameMap {
const char *from;
const char *to;
} NameMap;
#define NAMEMAP_N 5
extern NameMap nameMap[NAMEMAP_N];
static_assert
以确保一致性。NameMap nameMap[] = {
{"blah", "blah"},
{"blah", "blah"},
....,
....,
};
#include <assert.h>
static_assert(sizeof nameMap/sizeof nameMap[0] == NAMEMAP_N, "");