Mylib.h
#pragma once
char (*Call)(char a)=NULL;
char s='s';
void RunFun() {
Call(s);
}
void Init(char (*IN_CallMain)(char a),char IN_M)
{
IN_CallMain(IN_M);
}
Main.cpp
#include <iostream>
#include "Mylib.h"
//首先明確一個概念,不管是函數,變量,執行的時候C++無外乎一個操作,尋址,尋址尋址。執行的時候都是尋址(這裏要淡化變量和函數的區別)。
/*
區別:
typedef char (*CallMain)(char a);//CallMain是一個類型,可以用它定義函數指針
char (*Call)(char a);//Call是一個函數指針,直接拿來用做函數入口
*/
typedef char (*CallMain)(char a);
char hello(char IN_a)
{
std::cout << IN_a << std::endl;
return 't';
}
int main()
{
//第一種實現方式
//定義函數指針並且賦值
CallMain pfun = hello;
//在Init函數裏執行hello()
Init(pfun,'m');
//第二種實現方式
Call = hello;
RunFun();
return 0;
}