我有函數指針如下初始化函數指針時出現問題?
void (*stream) (const char *)
和IM初始化指針如下:
char dumpBuffer[512];
snprintf (dumpBuffer, sizeof (dumpBuffer), "<Pcm_DigitalIoChannelList>\n");
stream (dumpBuffer);
可以在任何告訴我的是正確的?
在此先感謝。
我有函數指針如下初始化函數指針時出現問題?
void (*stream) (const char *)
和IM初始化指針如下:
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;
然後你可以使用它,你看到前面。
您顯示的代碼不會初始化指針。它試圖首先使用它,而不是初始化它,這是未定義的行爲。 –
投票結束,因爲編輯使這個廢話。 – pmr
回滾到更早的編輯? – UncleBens