我正在尝试和IAR一起开发一个项目。以下是错误消息: ErrorPe260:缺少显式类型(假设为“int”)
致以问候。
当我尝试时: void send_data_byte(unsigned char dattt) {
我看到一个新的错误: ErrorPe159:声明与以前的"send_data_command“不兼容。
我在中的sen_data_command函数在下面
send_data_byte(unsigned char dattt){
for(j=0;j<8;j++){
pwmstart(1);
pwmstop(18);
if(dattt & 0x01){
__delay_cycles(1687);
dattt=dattt>>1;
}
else
{
__delay_cycles(562);
dattt=dattt>>1;
}
}
pwmstop(1);
} void send_data_command(unsigned char dat){
for (int r=0;r<160;r++)
{pwmstart(1);}
for (int y=0;y<80;y++)
{pwmstop(1);}
send_data_byte(dat);
repeat();
} 发布于 2019-03-30 03:10:38
您需要显式声明函数的返回类型。在这种情况下,如果没有要返回的内容,则应将其声明为void
void send_data_byte(unsigned char dattt) { 发布于 2019-03-30 03:23:03
错误消息指出,您没有显式声明函数send_data_type的任何返回类型。它建议在send_data_type之前放一个int。错误提示建议你用下面的方式写:
int send_data_byte(unsigned char dattt) { 如果不需要返回任何内容,也可以将函数声明为void。
void send_data_byte(unsigned char dattt) { 在你的代码中还有一个错误,那就是在send_data_byte函数中你没有声明j。代码的以下部分
send_data_byte(unsigned char dattt){
for(j=0;j<8;j++){ 应该是,
send_data_byte(unsigned char dattt){
int j;
for(j=0;j<8;j++){ 发布于 2019-03-30 04:03:44
在1999年之前,C语言的旧版本有一个“隐式int”规则。如果在没有指定返回类型的情况下声明了一个函数,则假定该函数返回类型为int的结果。1999年的标准放弃了这一规则,并强制要求在任何函数声明或定义上指定返回类型。许多编译器通过允许这样的声明来迎合旧代码,或者通过使用非致命警告来诊断它们。
即使在1999年前的C语言中,也没有真正的理由利用“隐式int”规则。如果函数返回int结果,则始终可以以这种方式显式声明它。(非常老的C,在1989年之前,没有void,但对1989年后的C的支持现在基本上是普遍的。)
至于你的其他错误:
Error[Pe159]: declaration is incompatible with previous "send_data_command"它表明您有两个send_data_command声明,或者一个声明和一个定义,它们在某些方面有所不同。在您的问题中只出现了一次send_data_command,所以您还没有向我们展示导致该错误的代码。确保程序中对send_data_command的所有引用都是一致的,并确保声明--特别是原型(指定任何参数的类型) --在您调用它的任何时候都是可见的。
(顺便说一句,如果缩进得当,您的代码将更容易阅读。有一些自动化的工具可以帮助你做到这一点。缩进应该反映代码的嵌套结构。)
https://stackoverflow.com/questions/55424088
复制相似问题