无法获取地址(wcsstr) - 未定义的变量?

时间:2013-01-30 05:56:52

标签: c++ function

我想知道所有标准功能的所有地址。但只有 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 '...'

如何解决这个问题?

1 个答案:

答案 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,这几乎总是一个好主意......; - )