黑马程序员技术交流社区

标题: C 自定义头文件与实现,部分代码问题 [打印本页]

作者: 傘が咲く    时间: 2014-4-23 13:51
标题: C 自定义头文件与实现,部分代码问题
本帖最后由 傘が咲く 于 2014-4-23 22:30 编辑

把自定义函数void one()与main函数分离后分别放在了不同的文件里。one.h、one.c、main.c。三个文件的内容分别如下:
one.h:
  1. #ifndef _ONE_H_
  2. #define _ONE_H_
  3.         void one();
  4. #endif
复制代码

one.c:
  1. #include <stdio.h>

  2. void one()
  3. {
  4.         printf("调用了one函数\n");
  5. }
复制代码


main.c:
  1. #include <stdio.h>
  2. #include "one.h"

  3. int main()
  4. {
  5.         one();
  6.         return 0;
  7. }
复制代码

这是学习李老师C基础的代码,我觉得这个地方的one.c中 #include <stdio.h>这行可以去掉,因为运行时是在main.c里运行,只要main.c中包含了这句就好,大家怎么认为呢?求专业解释!!
作者: 又召    时间: 2014-4-23 15:28
应该是不行的,在编译是时one.c和main.c是单独编译的,而one中因为用到printf函数,而这个是必须要包含<stdio.h>,不然你编译时one.c就会检测到语法错误了,两个文件都编译成.o文件后再做链接操作,最后生成.out可执行文件
作者: 葬花桥    时间: 2014-4-23 15:33
本帖最后由 葬花桥 于 2014-4-23 15:43 编辑

one.c中的是不可以的去掉的因为one.c中用到printf函数必须包含头文件,但是main.c中的是可以去掉的,因为main 中没用到头文件中的函数,所以不需要包含头文件,希望帮到你,你其实可以自己实验下,把它去掉看看
作者: 傘が咲く    时间: 2014-4-23 19:27
又召 发表于 2014-4-23 15:28
应该是不行的,在编译是时one.c和main.c是单独编译的,而one中因为用到printf函数,而这个是必须要包含,不 ...

谢谢回复,确实是单独编译的,帮到我了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2