<span style="background-color: rgb(255, 255, 255);">这是main.c</span>
#include<stdio.h>
void func_main()
{
printf("func_main!\n");
func_file_1(func_file_2);
}
int main()
{
func_main();
return 0;
}
这是file_1.c
#include<stdio.h>
void func_file_1(void(*func)())
{
printf("func_file_1!\n");
func();
}
这是file_2.c
#include<stdio.h>
void func_file_2()
{
printf("func_file_2!\n");
}
编译结果如下
[root@fc3 test]# gcc file_1.c file_2.c main.c
main.c: In function `func_main':
main.c:6: error: `func_file_2' undeclared (first use in this function)
main.c:6: error: (Each undeclared identifier is reported only once
main.c:6: error: for each function it appears in.)
编译器在编译的时候,并不知道 func_file_1(func_file_2); 中的func_file_2是函数,还是变量,所以会报错。 这时候解决的办法是,增加一个file_2.h文件,声明
void func_file_2(); 为函数,这样就可以编译并运行成功。