头文件 foo.h
#ifndef __FOO_H__
#define __FOO_H__
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
typedef void (*mt)(int);//declear
typedef void (*mt2)(int);
void get_magic_num(void (*callback)(int magic));
void get_magic_num2(void (*mt2)(int));
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __FOO_H__
void get_magic_num(void (*callback)(int magic)); 中 void (*callback)(int magic)的函数原型 就是函数的地址
#include "foo.h"
void get_magic_num(mt foo) //这里mt只是作为表明函数形指针类型,无实际
{
int magic = 9;
foo(magic);
}
void get_magic_num2(void my(int ) )
{
int magic = 9;
my(magic);
}
#include <stdio.h>
#include "foo.h"
void use_magic_num(int magic_num);
int main(int argc,char *argv[])
{
get_magic_num2(use_magic_num);
return 0;
}
void use_magic_num(int magic_num)
{
printf("bar.c : magic number is %d \n", magic_num);
}