匠人啊,让前辈们进来给我解决这个问题

[复制链接]
4170|20
 楼主| gdqinci 发表于 2010-4-5 16:00 | 显示全部楼层 |阅读模式
我在一个工程里面加了两个C文件,分别是否test.c和test2.c
编译的时候不能通过,照理说应该让两个文件连接的,于是乎我把一个文件包含到另一个文件中去,但还是不行!
我又把其中一个主函数的名字改了,也不行??

现在我有疑问:
1、一个工程里面能不能有两个MAIN主函数??
2、下面是我建的工程,里面有多少错误,请帮我列出来。
3、怎样改进,以后遇到这样的问题该怎样处理?


请大家帮我看看,附件是我建的工程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
chen3bing 发表于 2010-4-5 16:13 | 显示全部楼层
1。不能。
NE5532 发表于 2010-4-5 20:16 | 显示全部楼层
源文件是分别编译,但是也不能重名吧。
strang 发表于 2010-4-6 07:18 | 显示全部楼层
一个工程不能有两个主函数。
建立两个工程编译时没有问题的。
SULJE 发表于 2010-4-6 10:26 | 显示全部楼层
在test1.c中添加:#include  <test2.c>
在test1.c中删除:void delay( void) 函数的定义
在test1.2中删除: void main(void)函数的定义
然后重新编译一下试一试
zdhlixiang2006 发表于 2010-4-6 12:21 | 显示全部楼层
一个工程可以有很多和C程序,但是只能有一个有main函数,而这个C程序就是主函数
电子三极管 发表于 2010-4-6 12:25 | 显示全部楼层
:shutup:
liaojihua2010 发表于 2010-4-8 19:00 | 显示全部楼层
#include  <test2.c> 第一次见这样的
liaojihua2010 发表于 2010-4-8 19:00 | 显示全部楼层
5楼解释下可以吗
大树一棵 发表于 2010-4-8 20:34 | 显示全部楼层
一个程序只能有一个main函数
tcc8073 发表于 2010-4-8 22:31 | 显示全部楼层
把其中一个函数的MAIN()函数改个其他名字;这里用FFF()代替,不用MAIN这个名字,改完后在调用的的时候把这个函数当普通函数用,EXTERN VIOD FFF();这样你就可以调用这个函了,我的理解是一个工程中只能有一个MAIN()主函数;请注意这些函和主函数要放在同意个工程文件下
 楼主| gdqinci 发表于 2010-4-9 09:06 | 显示全部楼层
我去验证一下
ninibaba 发表于 2010-4-9 12:58 | 显示全部楼层
不能有两个MAIN
在C文件里
用EXTERN 声明另一个C文件里定义的变量
然后编译
hyg1984 发表于 2010-4-9 13:52 | 显示全部楼层
#include   第一次见这样的
liaojihua2010 发表于 2010-4-8 19:00


也是,没见过这样的!

我弄过一个工程有多个C文件的。
只有一个main函数
如test1中有main函数,则把test2添加进工程里。如果main中有调用到test2中的函数,必须要声明!一般来说,可以写一个test2的头文件test2.h(声明函数的)。然后#include 到main中就行。
black.lu 发表于 2010-4-11 19:26 | 显示全部楼层
不管什么函数都不能同名吧,包括main函数
冷漠 发表于 2010-4-11 21:14 | 显示全部楼层
看看图就清楚了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
冷漠 发表于 2010-4-11 21:27 | 显示全部楼层
5楼写得很好啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gdqinci 发表于 2010-4-15 10:49 | 显示全部楼层
现在来说说5楼兄弟的做法:

在test1.c中添加:#include  <test2.c>
在test1.c中删除:void delay( void) 函数的定义
在test1.2中删除: void main(void)函数的定义   //这里5楼兄弟好像有点笔误,就应该是test2.c 吧

修改,编译,不能通过,见下图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gdqinci 发表于 2010-4-15 10:55 | 显示全部楼层
发现一个问题,我在工程的Source Group 1 中加入了test.c和test2.c  
现在删除掉test2.c 因为它已经被test.c包含了

修改后编译,可以通过,见下图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gdqinci 发表于 2010-4-15 11:20 | 显示全部楼层
现在来说说16楼兄弟的做法:

根据16兄弟的图片修改,一次性编译通过

学习了16楼兄弟的一种做法,就是在每个文件的第一行用注释注明文件名,比如在文件第一行写下//test.c

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

341

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部