En ce qui concerne une API/bibliothèque va, normalement si vous allez avoir besoin d'une structure opaque, vous ne permettent pas à l'utilisateur de l'API pour déclarer des choses comme des tableaux ou des instances statiques à cause de cela. Ne sachant rien de la structure est le nom du jeu donc vous allez probablement devoir définir certaines fonctions pour les manipuler. La plupart des bibliothèques C qui déclarent des structures opaques ont souvent des fonctions d'accès et de modification.
Un exemple est de Lua (évidemment un état Lua est une structure à usage unique mais il est l'idée):
typedef struct lua_State lua_State;
void lua_pushnumber(lua_State *s, lua_Number n);
Dans ce cas, si vous avez décidé que vous aviez besoin de multiples états Lua, vous feriez quelque chose comme les éléments suivants:
lua_State *states[5];
for(int i = 0; i < 5; i++)
states[i] = lua_open();
Je pense que la règle générale de pouce est que si vous travaillez avec des structures opaques, vous allez travailler par le biais des pointeurs seulement, ce qui est à peu près la seule façon d'aller à ce sujet de toute façon.
Vous ne devriez pas pouvoir écrire même un seul «bnode b;» car le compilateur ne sait pas combien d'espace allouer. Vous seriez capable d'écrire '' bnode * bp; '', cependant. –