2012-04-26 3 views
1

Dans un fichier d'en-tête erreur GCC: attendu ')' avant paramètre

extern void Trace_Communication(communicationBlock_t mdbMessage);

donne error: expected ‘)’ before ‘mdbMessage’

Je suis sûr que communicationBlock_t est portée (et reliaze qu'il serait plus efficace pour passer un pointeur)

Si je copie la déclaration de communicationBlock_t juste avant la ligne incriminée extern, l'erreur est

error: conflicting types for ‘communicationBlock_t’ 
note: previous declaration of ‘communicationBlock_t’ was here 

qui semble impliquer que la ligne incriminée a accès à la déclaration de communicationBlock_t

Je suppose que je donne sur quelque chose de trivial et évident, mais j'ai été le codage toute la nuit et ne peut plus penser droit ...

Qu'est-ce que je fais mal? Merci 1, 000.000


Mise à jour: je suppose que c'est un enchevêtrement de fichiers comprennent ...

typedef struct 
{ 
    communicationMessage_t message; 
    uint8_t    length; 
#ifdef TESTING 
    char     commandName[32]; // for testing porpoises 
    DoRunTimeChecks  runTimeCheckCallback; 
#endif  
} communicationBlock_t; 
+1

Assurez-vous que 'Trace_Communication' et' mdbMessage' ne sont pas '# define'd ou' typedef'd n'importe où. –

+0

+1 Ils ne le sont pas, mais merci pour l'indice – Mawg

+1

Est-ce que la "déclaration précédente de 'communicationBlock_t' était ici" pointant vers le bon endroit et est-ce la déclaration que vous attendez? Que se passe-t-il si vous remplacez 'communicationBlock_t' par' int' dans le prototype de 'Trace_Communication()'? –

Répondre

0

Désolé, les gens. Il était, comme je soupçonnais une embrassade dans les fichiers #include

1

Me semble que vous utilisez une variable comme un nom de type. À quoi ressemble la déclaration de communicationBlock_t?

+0

+1 voir la question mise à jour – Mawg

Questions connexes