C 声明不兼容

C 声明不兼容,c,embedded,workbench,iar,C,Embedded,Workbench,Iar,我使用的是IAR Embedded Workbench,使用的是C语言 在将项目划分为通常的main/.h/.c表单时,我遇到了一些问题 例如,如果我创建一个example.h #ifndef EXAMPLE_H #define EXAMPLE_H void function(int [], int); #endif 而不是一个例子 #include "example.h" void function (int[] array, int number) {number = 1; //code

我使用的是IAR Embedded Workbench,使用的是C语言

在将项目划分为通常的main/.h/.c表单时,我遇到了一些问题

例如,如果我创建一个example.h

#ifndef EXAMPLE_H
#define EXAMPLE_H
void function(int [], int);
#endif
而不是一个例子

#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 

你使用了错误的语法。看

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

问题在于
无效函数(int[],int)
。更改为
无效函数(int name[],int)
无效函数(int*,int)
。另一个错误在
int[]array
中-它必须是
int array[]
int*array

在IAR中,当声明和定义不匹配时,您将看到此错误。
对于Ex-如果在.hpp中声明变量为uu ro_位置,并且在.c或.cpp中初始化时,如果不提供变量的u ro_位置,IAR将抛出相同的错误。

int[]array
???这是C语言,不是Java!!!另外,如果您说您使用的是“通常的.h/.c表单”,那么在c文件中,您在哪里包含相应的h文件?当然不是。但这不是说明问题的方式。冷静点。对于c文件,只需查看。在
example.h
中使用
#如果没有必要使用example\u h
,您可以根据需要多次声明函数原型,只要它们都相同。@WeatherVane:这仍然是一个很好的实践,因为头文件很可能包含比这个单一函数声明多一点的内容(我相信它的名称-example.h-以一种非常明显的方式暗示了这一事实)。无论如何,它与手头的问题无关。
void函数(int[],int)不是问题所在。它实际上是有效的C。