void on_mouse(int event, int x, int y, int flags, void *ustc),on_mouse未声明标识符

void on_mouse(int event, int x, int y, int flags, void *ustc),on_mouse未声明标识符是什么原因

img

双击下面的错误信息
定位到出错的代码行
然后再看为什么报错
告诉你了是调用的地方报错,不是定义的地方报错
如果调用在前,而定义在后,需要先声明

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题可能是因为没有先声明 on_mouse 函数导致的。在 C/C++ 中,函数需要先进行声明(或定义)才能在其他函数中使用。

可以在函数调用之前添加函数声明,告诉编译器 on_mouse 函数的返回类型、参数类型和参数名称。例如:

void on_mouse(int event, int x, int y, int flags, void *ustc);  // 函数声明

int main() {
    // ...
    setMouseCallback("Window", on_mouse, NULL);  // 函数调用
    // ...
}

void on_mouse(int event, int x, int y, int flags, void *ustc) {  // 函数定义
    // ...
}


在上面的代码中,首先声明了 on_mouse 函数,然后在 main 函数中调用了它。注意,在 main 函数调用 on_mouse 函数之前,必须先声明它。函数声明中只需要写出函数的返回类型、参数类型和参数名称,不需要写出函数体。函数的定义则需要包含函数体。

如果仍然提示未声明标识符的错误,可以检查一下函数声明和函数调用之间的作用域,或者检查一下是否有其他语法错误导致编译器无法识别 on_mouse 函数。