如何使用 extern 使结构数组可从另一个文件访问?

问题描述 投票:0回答:1

我在名为 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。

c global-variables extern
1个回答
0
投票
  • 在头文件中包含
    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, "");
© www.soinside.com 2019 - 2024. All rights reserved.