C语言 | 回调函数练习1
1.代码1
/*******************************************************************
* > File Name: callBackFunc1.c
* > Author: fly
* > Mail:
* > Create Time: 2023年04月12日 星期三 09时07分56秒
******************************************************************/
#include <stdio.h>
#define CHKPNT printf("%s() %d\n", __func__, __LINE__)
int CallBack(void)
{
CHKPNT;
return 0;
}
int Library(int value, int (*MyCallBackFunc)(void))
{
CHKPNT;
if(value == 1)
MyCallBackFunc();
else
return 1;
CHKPNT;
}
int main(int argc, char* argv[])
{
int a = Library(1, CallBack);
CHKPNT;
printf("a = %d\n", a);
return 0;
}
1-1.Makefile文件
CC = gcc
SRC = ${wildcard *.c}
BIN = ${patsubst %.c, %, $(SRC)}
CFLAGS = -g -Wall
all : $(BIN)
$(BIN) : % : %.c
$(CC) -o $@ $^ $(CFLAGS)
clean:
$(RM) $(BIN) a.out *.wav .*.*.sw?
.PHONY: all clean
1-2.编译运行
[lanfeiye@fly-vm test]$ make callBackFunc1
gcc -o callBackFunc1 callBackFunc1.c -g -Wall
callBackFunc1.c: In function ‘Library’:
callBackFunc1.c:28:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
[lanfeiye@fly-vm test]$ ./callBackFunc1
Library() 20
CallBack() 14
Library() 27
main() 33
a = 13
2.代码2
/*******************************************************************
* > File Name: callBackFunc1.c
* > Author: fly
* > Mail:
* > Create Time: 2023年04月12日 星期三 09时07分56秒
******************************************************************/
#include <stdio.h>
#define CHKPNT printf("%s() %d\n", __func__, __LINE__)
int CallBack(void)
{
CHKPNT;
return 0;
}
int Library(int value, int (*MyCallBackFunc)(void))
{
CHKPNT;
if(value == 1)
return MyCallBackFunc();
else
return 1;
CHKPNT;
}
int main(int argc, char* argv[])
{
int a = Library(1, CallBack);
CHKPNT;
printf("a = %d\n", a);
return 0;
}
2-1.编译、运行
[lanfeiye@fly-vm test]$ make callBackFunc1
gcc -o callBackFunc1 callBackFunc1.c -g -Wall
[lanfeiye@fly-vm test]$ ./callBackFunc1
Library() 20
CallBack() 14
main() 33
a = 0