声明不兼容

Declaration is incompatible

我在使用 IAR Embedded Workbench,使用 C 语言。

我在将我的项目划分为通常的 main/.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 

你使用了错误的语法。看看

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

问题出在void function(int [], int)。更改为 void function(int name[], int)void function(int *, int)。另一个错误在 int[] array - 它必须是 int array[]int * array.

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