礼X
2019-01-23 10:34
求大神解释。
首先要明确,引用另一个文件test.c和调用say函数可以达到同一个目的。但是像原题又引用文件,同时又调用test内部的say函数(默认是外部函数),则会重新,出错。因此正确做法可以是:1.只调用外部文件,同时将test函数内部的say函数改为static类型。2.直接将调用函数命令注释掉即可,默认say是外部函数,直接调用。
请问是这个意思吗?
注意到第二个源文件也就是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()是一个外部函数。
首先要明确,引用另一个文件test.c和调用say函数可以达到同一个目的。但是像原题又引用文件,同时又调用test内部的say函数(默认是外部函数),则会重复,出错。因此正确做法可以是:1.只调用外部文件,同时将test文件内部的say函数改为static类型。2.直接将调用文件命令注释掉即可,默认say是外部函数,直接调用。
C语言入门
926210 学习 · 20797 问题
相似问题