打印

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

[复制链接]
2714|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我在一个工程里面加了两个C文件,分别是否test.c和test2.c
编译的时候不能通过,照理说应该让两个文件连接的,于是乎我把一个文件包含到另一个文件中去,但还是不行!
我又把其中一个主函数的名字改了,也不行??

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


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

test2.rar

13.25 KB

相关帖子

沙发
chen3bing| | 2010-4-5 16:13 | 只看该作者
1。不能。

使用特权

评论回复
板凳
NE5532| | 2010-4-5 20:16 | 只看该作者
源文件是分别编译,但是也不能重名吧。

使用特权

评论回复
地板
strang| | 2010-4-6 07:18 | 只看该作者
一个工程不能有两个主函数。
建立两个工程编译时没有问题的。

使用特权

评论回复
5
SULJE| | 2010-4-6 10:26 | 只看该作者
在test1.c中添加:#include  <test2.c>
在test1.c中删除:void delay( void) 函数的定义
在test1.2中删除: void main(void)函数的定义
然后重新编译一下试一试

使用特权

评论回复
6
zdhlixiang2006| | 2010-4-6 12:21 | 只看该作者
一个工程可以有很多和C程序,但是只能有一个有main函数,而这个C程序就是主函数

使用特权

评论回复
7
电子三极管| | 2010-4-6 12:25 | 只看该作者
:shutup:

使用特权

评论回复
8
liaojihua2010| | 2010-4-8 19:00 | 只看该作者
#include  <test2.c> 第一次见这样的

使用特权

评论回复
9
liaojihua2010| | 2010-4-8 19:00 | 只看该作者
5楼解释下可以吗

使用特权

评论回复
10
大树一棵| | 2010-4-8 20:34 | 只看该作者
一个程序只能有一个main函数

使用特权

评论回复
11
tcc8073| | 2010-4-8 22:31 | 只看该作者
把其中一个函数的MAIN()函数改个其他名字;这里用FFF()代替,不用MAIN这个名字,改完后在调用的的时候把这个函数当普通函数用,EXTERN VIOD FFF();这样你就可以调用这个函了,我的理解是一个工程中只能有一个MAIN()主函数;请注意这些函和主函数要放在同意个工程文件下

使用特权

评论回复
12
gdqinci|  楼主 | 2010-4-9 09:06 | 只看该作者
我去验证一下

使用特权

评论回复
13
ninibaba| | 2010-4-9 12:58 | 只看该作者
不能有两个MAIN
在C文件里
用EXTERN 声明另一个C文件里定义的变量
然后编译

使用特权

评论回复
14
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中就行。

使用特权

评论回复
15
black.lu| | 2010-4-11 19:26 | 只看该作者
不管什么函数都不能同名吧,包括main函数

使用特权

评论回复
16
冷漠| | 2010-4-11 21:14 | 只看该作者
看看图就清楚了。

使用特权

评论回复
17
冷漠| | 2010-4-11 21:27 | 只看该作者
5楼写得很好啊。

使用特权

评论回复
18
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 吧

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

test2更改验证 5楼1.jpg (150.79 KB )

test2更改验证 5楼1.jpg

使用特权

评论回复
19
gdqinci|  楼主 | 2010-4-15 10:55 | 只看该作者
发现一个问题,我在工程的Source Group 1 中加入了test.c和test2.c  
现在删除掉test2.c 因为它已经被test.c包含了

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

test2更改验证 5楼2.jpg (137.29 KB )

test2更改验证 5楼2.jpg

使用特权

评论回复
20
gdqinci|  楼主 | 2010-4-15 11:20 | 只看该作者
现在来说说16楼兄弟的做法:

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

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

test2更改验证 16楼.jpg (99.84 KB )

test2更改验证 16楼.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

340

帖子

2

粉丝