C avant la déclaration de la structure d'en-tête

Je suis en train de passer struct pointeur de fonction. J'ai un typedef dans fichier1.h, et que vous voulez pour n'inclure que les en-tête fichier2.c, parce que fichier2.h seulement besoin de pointeur. En C++, je voudrais juste écrire comme je l'ai fait ici, mais en utilisant le C99, il ne fonctionne pas. Si quelqu'un a des suggestions pour passer struct pointeur sans définition complète, il serait très apprécié. Le compilateur gcc.

fichier1.h

typedef struct
{
    ...
} NEW_STRUCT;

fichier2.h

struct NEW_STRUCT;

void foo(NEW_STRUCT *new_struct); //error: unknown type name 'NEW_STRUCT'

fichier2.c

#include "file2.h"

#include "file1.h"

void foo(NEW_STRUCT *new_struct)
{
    ...
}
"il ne fonctionne pas." l'Expliquer. Avez-vous obtenez une erreur du compilateur? une erreur de l'éditeur de liens? un moment de l'exécution de crash? Ce qui s'est passé?
Désolé, j'ai oublié que. Il ne se compile pas, ni comme ça, ni si j'ajoute struct à l'argument de fonction, alors la variation de l'erreur de "fonction" foo "type d'argument missmatch".

OriginalL'auteur PovilasG | 2013-07-28