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

Problem while initializing function pointer?

本文关键字:问题 函数 指针 初始化      更新时间:2023-10-16

我有函数指针如下

void (*stream) (const char *)

,并按如下方式初始化指针:

char dumpBuffer[512];
snprintf (dumpBuffer, sizeof (dumpBuffer), "<Pcm_DigitalIoChannelList>n");
stream (dumpBuffer);
谁能告诉我这是正确的?

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

void foo(const char *) {
    // do stuff
}
void (*stream) (const char *) = &foo;

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

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

你可以像上面那样使用

不完全是这样,通常你必须像这样定义函数指针:

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

然后赋值给函数:

stream myStream = &somefunction;

那么你可以直接运行它:

myStream(pSomeBuffer);