声明不兼容
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 将抛出相同的错误。
我在使用 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 将抛出相同的错误。