>>498
そのやりかたではできない。
どうせmapは変更しないのだろうから、ID構造体を隠蔽してそのポインタを提供するのではなく
MAP構造体を隠蔽してそのポインタを提供する方式にするんだ。

// id.h
typedef struct{
  uint32_t a;
  uint8_t bc[2]
}ID;
typedef struct{
  const ID *id;
  const char *name;
}MAP_;
typedef const MAP_ * const MAP;
extern MAP map;

// id.c
static ID ID_HOGE_ = {0xaaaa, {0xbb, 0xcc}};
static MAP_ map_[]={
  {&ID_HOGE_,"hoge"},
  ...
};
MAP map=map_;

これでいけるはず