我知道有两种解决办法(不知道是否真的正确),但是有一个问题不解。
两种方法解决,第一种,将hello.c中的#include "test.c";这一行删去,在函数printLine之前加上extern(事实上可省略)使其成为外部函数,使其能被test.c调用从而在test.c中完成函数say,函数say默认为外部函数,能被(删去#include "test.c"的)hello.c调用,从而完成。
第二种,在hello.c中只将函数printLine改为外部函数使其能在test.c中被调用,而在test.c中,将函数say改为test.c的内部函数,即在其之前加上static。由于hello.c中已经包含include"test.c"所以能直接调用该函数。
不知道我的这两个思路是否正确,但是对于第二种方法,有一个问题是,(若第一种方法思路正确,成立)既然函数say默认为外部函数,那么即使不包含test.c的文件(如把#include "test.c"删去的hello.c)都能直接调用函数say(第一种方法采用),为什么包含了test.c文件的默认的hello.c文件却不能直接调用,需要先把函数say改为test.c文件的内部函数才能调用呢?