编译时的错误提示:
pmd/pmdEDU.cpp: In function ‘int ( getEntryFuncByType(EDU_TYPES))(pmdEDUCB, void*)’:
pmd/pmdEDU.cpp:94:4: error: invalid conversion from ‘int ()(pmdEDUCB, void)’ to ‘pmdEntryPoint {aka int ()(pmdEDUCB, void*)}’ [-fpermissive]
} ;
其中函数的声明及实现如下:
头文件中声明:
pmdEDU.hpp
typedef int (pmdEntryPoint) ( pmdEDUCB , void * ) ;
pmdEntryPoint getEntryFuncByType ( EDU_TYPES type ) ;
int pmdAgentEntryPoint ( pmdEDUCB cb, void arg ) ;
pmdEDU.cpp文件中实现代码如下:
struct _eduEntryInfo
{
EDU_TYPES type ;
int regResult ;
pmdEntryPoint entryFunc ;
} ;
define ON_EDUTYPE_TO_ENTRY1(type,system,entry,desp) \
{ type, registerEDUName(type,desp,system), entry }
pmdEntryPoint getEntryFuncByType ( EDU_TYPES type )
{
pmdEntryPoint rt = NULL ;
static const _eduEntryInfo entry[] = {
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_AGENT, false,
pmdAgentEntryPoint,
"Agent" ),
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_TCPLISTENER, true,
pmdTcpListenerEntryPoint,
"TCPListener" ),
ON_EDUTYPE_TO_ENTRY1 ( EDU_TYPE_MAXIMUM, false,
NULL,
"Unknown" )
} ;
static const unsigned int number = sizeof ( entry ) /
sizeof ( _eduEntryInfo ) ;
unsigned int index = 0 ;
for ( ; index < number; ++index )
{
if ( entry[index].type == type )
{
rt = entry[index].entryFunc ;
goto done ;
}
}
done :
return rt ;
}
编译环境:debian sid g++4.8.2
我没发现问题出现在哪儿,烦劳各位了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。