免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 子弹
打印 上一主题 下一主题

[C] 多个c语言互相引用问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-10-24 17:44 |只看该作者

多个c语言互相引用问题

[quote]原帖由 "yuxq"]建议楼主还是认真的看一下c/c++基础吧![/quote 发表:

1.c
test()
{
        printf("11111";
}
2.c
#include "d:\c\1.c"
main()
{
test();
}
你可以试验一下,也是可以的

windows 2000+turbo c

论坛徽章:
0
12 [报告]
发表于 2003-10-24 17:46 |只看该作者

多个c语言互相引用问题

原帖由 "CharlesWang2" 发表:
在 4.h 里面写
extern void testfunc();

在  2.c 里面定义
void testfunc()
{
printf( "hello world";
}

在 1.c 里面写

#include "4.h"
int main( int argc, char ** argv)
{
     testfunc();
..........


thanks

论坛徽章:
0
13 [报告]
发表于 2003-10-24 17:51 |只看该作者

多个c语言互相引用问题

你的方法是可以,但是有以下缺点。
1.d:\c\1.c 绝对路径! 用对如果你‘的目录改变了怎么办
2.你只能编译 1.c ,不能编译 2.c 否则连接到一起的时候有冲突。
3. 编译 1.c 的时候也要包含 2.c ,这样编译速度慢,分开多个文件的意义就没有了。
为什么要分开多个文件,因为要分多个模块,一个的模块修改之后,不用重新编译其他模块。
4.  如果程序大了, 3.c 也包含了 2.c , 4.c 也包含了 1.c , 5.c 包含了 3.c 和 4.c  , 你自己都晕头了,为什么有的地方变量没有定义,有的地方变量重复定义。

觉得你是个新手

论坛徽章:
0
14 [报告]
发表于 2003-10-27 22:01 |只看该作者

多个c语言互相引用问题

gcc -o a.out 1.c 2.c

论坛徽章:
0
15 [报告]
发表于 2003-10-28 13:25 |只看该作者

多个c语言互相引用问题

这个东西我相信任何一个老师都没有详细讲清楚,任何一个教科书都没有深究,我也是过了很多很多年才知道,就像知道了将光盘可以当镜子照的那一面向下放一样,原来.h是用来告诉编译器有那些东西,而.c/cpp文件是告诉编译器那些东西都在哪.如果你要想在.c里引用不在这个文件里定义的,那就用.h文件告诉编译器吧.

论坛徽章:
0
16 [报告]
发表于 2003-10-28 13:29 |只看该作者

多个c语言互相引用问题

还有.h,.c只是大部分编译器默认的suffix,大可用其他的,象stl里的连后缀都没了,也可以包含.inc的.

论坛徽章:
0
17 [报告]
发表于 2003-10-28 13:37 |只看该作者

多个c语言互相引用问题

除了.h,其他的还是不提倡用,把人都搞晕了

论坛徽章:
0
18 [报告]
发表于 2003-10-28 15:20 |只看该作者

多个c语言互相引用问题

一、DOS的Turboc 2.0环境:

    1.现将二个函数Sub1()及Sub2()建立成一个函数库文件取名MyLib.Lib。两个函数的类型及形参如下:

Void Sub1(Void);Float Sub2(Int i,Float x)将它们分别建立一个文件,取名为Sl.c及S2.c,再用命令Tcc对它们分别

编译后产生两个目标文件S1.obj及S2.obj,最后使用Tlib命令建立函数库文件MyLib.Lib,并建立相应的列表文件(列表文件主

要用来检查主函数库情况),命令格式如下:

  Tcc S1.c S2.c
  Tlib MyLib +S1 +S2,MyLib.Lst

将产生的Mylib.Lib函数库文件拷贝到标准库目录下C:\TC\Lib.

  2.建立其首标文件(假设取名为myfunc.h)内容如下:

  extern void sub1(void);
  extern float sub2(int,float);

将此文件拷贝到目录下c:\tc\include.

  3.在用户的程序中按下列方式直接使用即可

  #include<myfunc.h>
  main(){… 调用Sub1();Sub2(); … }

  4.在Turboc下用编译命令Tcc对用户程序进行编译及链接。设其用户程序文件名为My.c,使用命令格式:

  Tcc  -I  C:\TC\include  -L  C:\TC\Lib  My.c  Mylib.lib

执行完后就会产生一个My.exe可执行文件,其中-I后面指出首标文件的目录,而-L后面指出函数库的子目录,最后两个分别是

源程序文件及函数库文件。关于Tcc和Tlib的详细用法在系统提示符下键入C:\TC\TCC和C :\TC\Tlib可得到帮助。

 

上面的内容是不是有错误??我为什么照着他说的做老有错误

论坛徽章:
0
19 [报告]
发表于 2003-10-29 11:11 |只看该作者

多个c语言互相引用问题

.c,.h都不过是扩展名而已。
反正include就是把你include的文件原样放到你用include的地方而已。
所以无所谓是c还是h了。
如果看着实在别扭把.c改成.h一样用
关键是别在include的文件里分配空间。

论坛徽章:
0
20 [报告]
发表于 2003-10-29 20:06 |只看该作者

多个c语言互相引用问题

在编译的时候把所有调用程序的文件链接以来不就可以了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP