[linux,c++] 使用指针函数实现多个函数调用
2014-10-27 20:55
555 查看
//g++ -o funcEntry funcEntry.hpp funcEntry.cpp
in the next section , we will implement a more complex function entry point test ,
on base of this
//coding me
#include <iostream> #include <string> #include <map> #ifndef FUNCENTRY_HPP__ #define FUNCENTRY_HPP__ enum LEVEL_TYPE { LEVEL_SYSTEM = 0 , LEVEL_PROGRAMMER , LEVEL_ORDINARY } ; typedef int (*funcEntryPoint) ( char *) ; //define the pointer function ,we also name it the entry address of function funcEntryPoint getFuncEntryPointByType ( LEVEL_TYPE type ); //we send different enum type value ,and get target function entry int systemLevelEntryPoint ( char * ) ; //send LEVEL_SYSTEM ,get systemLevelEntryPoint function entry int programmerLevelEntryPoint ( char * ) ; //send LEVEL_PROGRAMMER ,get programmerLevelEntryPoint pointer function int ordinaryLevelEntryPoint ( char * ) ; //after getting function entry point , we can regard it as the function itself #endif
#include "funcEntry.hpp" using namespace std ; funcEntryPoint getFuncEntryPointByType ( LEVEL_TYPE type ) { switch ( type ) { case LEVEL_SYSTEM : return systemLevelEntryPoint ; case LEVEL_PROGRAMMER : return programmerLevelEntryPoint ; case LEVEL_ORDINARY: return ordinaryLevelEntryPoint ; default : cout<<"error type " ; return NULL ; } } int systemLevelEntryPoint ( char * line ) { cout<<" system "<<endl ; cout<<line<<endl ; return 0 ; } int programmerLevelEntryPoint ( char *line ) { cout<<"programmer"<<endl ; cout<<line<<endl ; return 0 ; } int ordinaryLevelEntryPoint ( char *line ) { cout<<"ordinary"<<endl ; cout<<line<<endl ; return 0 ; } int main ( int argc , char * argv[] ) { funcEntryPoint entryFunc ; entryFunc = getFuncEntryPointByType ( LEVEL_SYSTEM) ; //we get systemLevelEntryPoint function entry entryFunc("i am system level function !") ; //we use function entry just like use the method itself entryFunc = getFuncEntryPointByType ( LEVEL_PROGRAMMER ) ; entryFunc("i am programmer level function !") ; entryFunc = getFuncEntryPointByType ( LEVEL_ORDINARY ) ; entryFunc("i am ordinary user level function !") ; return 0 ; }
in the next section , we will implement a more complex function entry point test ,
on base of this
//coding me
相关文章推荐
- [linux,c++]使用指针函数实现多个函数调用_Advanced
- 转:使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- Linux下c++调用自己编写的matlab函数:通过matlab引擎实现
- Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现
- Linux:使用rpcgen实现64位程序调用32位库函数
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- CDHtmlDialog的基本使用(C++调用JS函数的实现)
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现
- linux下使用jni实现c++调用java程序(3)多线程jni使用
- linux下使用jni实现c++调用java程序(5)参考资料总结
- 如何在linux C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理(转)
- linux下使用SWIG实现Python调用C++ sdk读取相机图片
- CDHtmlDialog的基本使用(JS调用C++函数的实现)
- Linux下c++调用自己编写的matlab函数:通过shell script system command实现
- CDHtmlDialog的基本使用(C++调用JS函数的实现)
- linux下使用jni实现c++调用java程序(4)DestroyJavaVM出现错误
- linux下使用jni实现c++调用java程序(1)准备工作
- linux下使用jni实现c++调用java程序(2)找不到java类的问题