如何摆脱Microchip pic16f877A主要重新定义的错误?

时间:2016-06-08 13:11:13

标签: microchip

我是微芯片家族的新手。我试过了下面的程序,

#include<pic.h> 
#include <stdio.h>
__CONFIG(0x1932);
void main() 
{ 
TRISA=0x00;
 PORTA=0x01; 
PORTA=0x02; 
PORTA=0x04; 
PORTA=0x08; 
PORTA=0x10;
 PORTA=0x20; 
PORTA=0x40; 
}    

但我得到错误:

  

错误[237] C:\ Users \ mathishara \ Desktop \ project_mplab \ alternative.c;   9.功能&#34; _main&#34;重新定义。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

Main应定义为

int main(void)

任何不带参数的函数都应该有void作为参数列表。

有关进一步的讨论,请参阅main() function in CWhat should main() return in C and C++?。对于嵌入式应用程序,&#34; normal&#34;参数列表int main(int argc, char *argv[])没有多大意义,所以void没问题。

答案 1 :(得分:0)

在以下情况下可能会发生此错误:

  1. 函数定义与原型不符

例如

int fun_prot();     /* the function prototype is missing the parameter - "int" */

int fun_prot(int a)
{
    ...
}
  1. 如果函数在同一模块中具有多个定义

函数重载在C中是非法的,并且会触发重新定义错误。 例如:

int twice(int a)
{
    return a*2;
}

long twice(long a)      /* only one prototype & definition of twice can exist and this will trigger a redifinition error */
{
    return a*2;
}