這么一段代碼,竟然沒編譯通過,msvc,g++ 都不通過。看不懂。。
g++ 報錯:invalid conversion from ‘void (*)(void*, int* (*)(), int, int)’ to ‘void (*)(void*, int, int, int)’ [-fpermissive]
請大佬給解釋一下~
#include <iostream>
typedef void(*call_back)( void*, int, int, int);
void GetProcess(call_back cb, void* cb_class)
{
float process = 0.8;
if (cb)
{
cb(cb_class, 0, 1, 1);
}
}
void callback(void* cl, int errno, int a, int b)
{
printf(" %d\n", errno);
}
int main(int argc, char** argv)
{
GetProcess(callback, nullptr);
return 0;
}
uj5u.com熱心網友回復:
形參int errno 換個名字。 errno是個宏uj5u.com熱心網友回復:
其實都已經提醒你了, void callback(void* cl, int errno, int a, int b);那個errno是紅色的,那是個紅,你定義的變數名和C++里面的宏重復了uj5u.com熱心網友回復:
改成.c,gcc編譯沒問題。.cpp,g++編譯有問題。看來g++檢查太牛了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225184.html
標籤:C++ 語言
上一篇:release的時候老是觸發斷點
