为什么不去掉#include "test.c"会报错

来源:5-13 内部函数与外部函数

满慕星辰

2019-07-25 18:25

#include <stdio.h>

extern void printLine()     //这里定义的方法对吗?

{

printf("**************\n");

}

int main()

{

say();

return 0;

}

https://img4.mukewang.com/5d3982a000017c5a14880776.jpg

https://img1.mukewang.com/5d39837e000156c607120576.jpg

写回答 关注

3回答

  • 忘川之梦
    2019-09-16 00:32:43

    不怪,只不过是环境惹得祸。vs的集成开发环境是多线程(面向对象学习后你就晓得了)编译的,适合大型项目开发。你可以理解编译test.c文件和其他文件是同时进行的。当编译test.c文件时并未找到printLine()的声明或定义(因为这时候main.c文件还没有编译完成),只能假设printLine()的返回值是int类型(为啥假设int类型,,,等你有机会了问比尔·盖茨吧。),而在编译main.c文件时找到了printLine()的定义,但是printLine()的定义却是void,导致再次定义失败。

    解决方法:在test.c文件中,say()前添加声明  void printLine(); 挡掉vs集成开发环境的自作主张。

    也不错,你可以理解c函数分两级内部(static)、外部(extern 默认)。函数被static标记后就被固定在test.c文件中了,就不能再默认跨文件调用了。想要调用就要引入文件,也就是#include "test.c"。

  • 我是男神胡大人
    2019-08-08 10:58:18

    你安装的是哪个版本啊?为什么会有中文,而且底色是黑色的?


    满慕星辰

    我用的是VS2013,安装的中文版的,改成黑色模板就是黑色的

    2019-08-08 23:31:27

    共 1 条回复 >

  • 满慕星辰
    2019-07-25 18:30:56

    https://img.mukewang.com/5d3984c200012af705470134.jpg

    去掉之后出现say未定义。。。


    小小疾飞

    我也感到好奇怪,左下角没去掉的。看其他大神怎么回答吧。

    2019-07-26 10:12:17

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926022 学习 · 20793 问题

查看课程

相似问题