2015-10-13 9 views
1

Я работал с IAR Embedded Workbench, используя язык C.Декларация несовместима

У меня возникли проблемы при разделении моего проекта на обычную основную/.h/.c форму.

Например, если я создаю example.h

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

И чем example.c

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

Он говорит:

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, а не Java !!! Кроме того, вы говорите, что используете «обычную форму .h/.c», а затем, где в файле C вы включаете соответствующий файл H? –

+1

Несомненно, это не так. Но это не способ сказать. Расслабься. Для файла c просто посмотрите. – EagleOne

+0

В 'example.h' ваше использование' #ifndef EXAMPLE_H' не нужно, вы можете объявить прототип функции столько раз, сколько хотите, при условии, что они все одинаковы. –

ответ

2

Вы используете неправильный синтаксис. Посмотрите на

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

Проблема в void function(int [], int). Изменить на void function(int name[], int) или void function(int *, int). Другая ошибка находится в int[] array - она ​​должна быть int array[] или int * array.

+0

'void function (int [], int);' не проблема. На самом деле это действительно C. – cremno