哪里错了错了

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

慕粉1851291026

2019-02-17 19:37

#include <stdio.h>
#include "test.c"   //引用test.c文件
extern void printLine()     //这里定义的方法对吗?
{
   printf("**************\n");   
}
int main()
{
    say();
    return 0;
}


写回答 关注

2回答

  • 林小七_sorina
    2019-02-21 13:44:50

    注意到第二个源文件也就是test.c【后面将用T代替】调用了第一个源文件hello.c【后面将用H代替】中的函数,因此我们先将H中被T调用的函数printLine()修改为外部函数也就是加上一个extern,这样T也就是一个正常的源文件了。   现在讨论两种情况:

    A。当我们把T编译为静态函数的时候——static say()   ,我们在H若要使用T的这个静态函数,这需要将他调用过来,而一个静态函数是无法直接调用的,此时我们需要先引入say()函数所在的源文件,也就是H中的第二行代码的用意。     

    B。当我们把T编译为动态函数的时候——say()或者extern say()【因为extern可以省略】,我们若要在H中使用T的这个函数say()那么我们可以直接调用,因为say()是一个外部函数,无需引入其所在的源文件T也就是不需要H的第二行,因此会有人说“只要把第二行注释掉就行了”其实这句话的前提是say()是一个外部函数。


    林小七_so... 回复慕用1037...

    是的,我自己都没发现,谢谢啦

    2019-03-19 09:21:14

    共 2 条回复 >

  • qq_慕标5188317
    2019-02-18 11:08:28

    #include "test.c"和say();意义是一样的,注释掉#include "test.c"就可以了。

C语言入门

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

926286 学习 · 20799 问题

查看课程

相似问题