免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1616 | 回复: 4
打印 上一主题 下一主题

extern问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-20 20:43 |只看该作者 |倒序浏览
就两个文件 main.c和main.h
main.c 里面引用了一个 read_config_info函数
而main.h里面是有这样的一段话 extern int read_config_info:
难道这样就可以了么?程序顺利执行了?可是结果怎么样?

论坛徽章:
0
2 [报告]
发表于 2007-07-20 20:55 |只看该作者
如果你采用extern的方法的话 你应该把main.h改为后缀为.c的一个文件,如test.c. 然后再
gcc test.c main.c -o main 这样来编译.
如果不采用extern的方法的话, 你就在main.c中include"main.h"这个头文件就可以了.

论坛徽章:
0
3 [报告]
发表于 2007-07-20 21:11 |只看该作者

extern问题

理解

可是我有个一问 现在我就用main.h 是不是可以把read_config_info 这个函数的内容写到另一个文件中 而这个文件在main.c的头文件是没有被#include到

论坛徽章:
0
4 [报告]
发表于 2007-07-20 21:41 |只看该作者
嗯. 这是可以的. 比如:
h1.h

  1. void h1();
复制代码


h1.c

  1. #include<stdio.h>
  2. void h1()
  3. {
  4.         printf("h1()\n");
  5. }
复制代码

h2.c

  1. #include<stdio.h>
  2. #include"h1.h"
  3. extern void h1();


  4. int main()
  5. {
  6.         h1();
  7.         printf("h2\n");
  8.         return 0;
  9. }
复制代码


然后再
gcc h1.c h2.c -o hello 就可以了.

或者说你把h1编成动态库来进行编译, 即


  1. gcc -fPIC -g -c h1.c -o libh1.o
  2. gcc -g -shared -W1 -o libh1.so libh1.o -lc
  3. gcc h2.c -o hello -L. -lh1
  4. export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATY
复制代码


然后再执行./hello就可以了.

论坛徽章:
0
5 [报告]
发表于 2007-07-21 11:07 |只看该作者

extern问题

比较详细 谢谢无私帮助:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP