初始化函数指针时出现问题?

时间:2011-07-28 11:34:40

标签: c++ c

我的函数指针如下

void (*stream) (const char *)

并初始化指针如下:

char dumpBuffer[512];
snprintf (dumpBuffer, sizeof (dumpBuffer), "<Pcm_DigitalIoChannelList>\n");
stream (dumpBuffer);

可以告诉我是否正确?

提前致谢。

2 个答案:

答案 0 :(得分:3)

要初始化此指针,您必须为其分配具有兼容签名的函数的地址:

void foo(const char *) {
    // do stuff
}

void (*stream) (const char *) = &foo;

这也可以,因为函数会自动提升为指针:

void (*stream) (const char *) = foo;

然后你可以在上面显示它。

答案 1 :(得分:2)

不完全,通常你必须定义函数指针,如:

typedef void (*stream) (const char*);

然后将其分配给一个函数:

stream myStream = &somefunction;

然后你可以简单地运行它:

myStream(pSomeBuffer);