2015-10-13 4 views
1

Je travaillais avec IAR Embedded Workbench en utilisant le langage C.La déclaration est incompatible

J'ai rencontré des problèmes lors de la division de mon projet sous la forme principale/.h/.c habituelle.

Par exemple, si je crée un example.h

#ifndef EXAMPLE_H 
#define EXAMPLE_H 
void function(int [], int); 
#endif 

Et qu'un example.c

#include "example.h" 
void function (int[] array, int number) 
{number = 1; //code 
} 

Il dit:

Error[Pe147]: declaration is incompatible with "__interwork __softfp 
void function(int *, int)" (declared at line 4 of (path) 

Error[Pe141]: unnamed prototyped parameters not allowed when body is  present (path) 


Error[Pe020]: identifier "number" is undefined (path) 

Error while running C/C++ Compiler 
+0

'int [] array' ??? C'est C, pas Java !!! De plus, vous dites que vous utilisez le "formulaire habituel .h/.c", alors où dans le fichier C incluez-vous le fichier H correspondant? –

+1

Bien sûr que non. Mais ce n'est pas la façon de le dire. Se détendre. Pour le fichier c, il suffit de regarder. – EagleOne

+0

Dans 'example.h', votre utilisation de' #ifndef EXAMPLE_H' est inutile, vous pouvez déclarer un prototype de fonction autant de fois que vous le souhaitez, à condition qu'ils soient tous les mêmes. –

Répondre

2

Vous utilisez une syntaxe erronée. Regardez

void function (int array[], int number) 
{ number = 1; //code 
} 
3

Le problème est dans void function(int [], int). Passez à void function(int name[], int) ou void function(int *, int). Une autre erreur est dans int[] array - il doit être int array[] ou int * array.

+0

'void function (int [], int);' n'est pas le problème. C'est en fait valide C. – cremno