使用keil编程常遇到c语言问题;main被重复定义了,如何破?

#include<reg52.h>
extern main;
void dlay(float k)
{
unsigned int h,j;
h =k*100;
while(h--)
{
for(j=8505;j>0;j--) ;
} }
void main()
{
int T,i; T=0xfe;
while(1)
{for(i=8;i>0;i--)
P1=T,T<<=1,T=T+1,dlay(0.1) ;
} }

删除掉extern main;就好了

main这个关键字不能随便定义的
只能存在一个
程序都是从main开始所以也不能被调用,所以根本没必要声明main函数追问

删掉还不行:
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: MAIN
MODULE: 流水灯(位移).obj (流水灯(位移))
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MAIN?流水灯(位移)

追答

追问

追答

果然有多个文件


只留下text2.c其他全部删除

remove file删除其他的


只留下text2.c

如果要其他功能一般是.H .C成对出现

多个C里面还有多个main函数当然不行


最后再吧extern main;注释掉


编译器是keil4的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-12
亲,main关键字不能变成再定义变量的,extern main是不对的,定义的外部变量main用其他变量表示吧追问

求大神,详细些

第2个回答  2013-10-12
P1=T,T<<=1,T=T+1,dlay(0.1)//这里的逗号都应该变成分号追问

不行

追答

void dlay(float k)

{  

unsigned int h,j;

        h =k*100;

while(h--)

{

for(j=8505;j>0;j--)  ;

}     }上面的float变成int型的变量就可以了,你的编译器不支持浮点运算,记得把extern main;删掉哦,把我上面发的文件按说明拷进keil中就能支持浮点运算了

追问

还不行:

追答

#include
void dlay(float k)
{
unsigned int h,j;
h =k*100;
while(h--)
{
for(j=8505;j>0;j--) ;
} }
void main()
{
int T,i; T=0xfe;
while(1)
{for(i=8;i>0;i--)
P1=T,T<<=1,T=T+1,dlay(0.1) ;
} }
这是你的程序在我电脑上运行正常,看你还有一个c文件,另一个c里面不能再有main函数了

相似回答