我想知道所有标准功能的所有地址。但只有 wcsstr 很奇怪。我无法转换或推送它作为参数来记录地址值。同时:
void *address = printf; //OK
void *address = scanf; //OK
void *address = wcsstr; //Compling error!!!
error C2440: 'initializing' : cannot convert from '' to 'void *'
它的定义很奇怪。什么是''定义?也许它是“复杂函数定义??? ”
甚至方法:
printf("Address of wcsstr : 0x%X", wcsstr);
我也发现了疯狂的编译错误:
error C2664: 'printf' : cannot convert parameter 2 from
'unsigned short *(unsigned short *,const unsigned short *)' to '...'
如何解决这个问题?
答案 0 :(得分:0)
除非转换为非标准转换,您可以使用static_cast
选择所需的函数重载。
E.g。
void *address = static_cast<wchar_t const* (*) ( const wchar_t*, const wchar_t* )>( wcsstr );
或者更清楚(恕我直言),
typedef wchar_t const* Foo( const wchar_t*, const wchar_t* );
void *address = static_cast<Foo*>( wcsstr );
可能会在那里添加const
,这几乎总是一个好主意......; - )