当我尝试将 "glfwSetErrorCallback" 函数放入 return 非整数值的 cout 中时,为什么会得到整数输出?

Why do I get integer output when I try to put "glfwSetErrorCallback" function in cout, which return non-integer value?

我正在学习 GLFW 3.3,正如功能描述中所说:

Returns the previously set callback, or NULL if no callback was set.

来源:[https://www.glfw.org/docs/3.3/group__init.html#gaff45816610d53f0b83656092a4034f40]

现在我要做的是了解它的价值。我试图将其理解为好像 return 值是指向函数的指针,因为正如文档中关于 GLFWerrorfun 类型所述:

typedef void(* GLFWerrorfun) (int, const char *) This is the function pointer type for error callbacks.

来源:[https://www.glfw.org/docs/3.3/group__init.html#ga6b8a2639706d5c409fc1287e8f55e928]

这是我的代码:

#define GLFW_DLL
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>

void handleErrorCallback (int code, const char * description)
{
    // Code
}

int main (int argc, char * argv[])
{
    std::cout << glfwSetErrorCallback (handleErrorCallback) << std::endl;
    std::cout << glfwSetErrorCallback (NULL) << std::endl;

    return 0;
}

控制台上写入的第一个值是0。 我得到它是因为 NULL 被 returned 因为还没有设置回调。

控制台上写的第二个值是1,让我很困惑:GLFWerrorfun return值是怎么转换成整数的?我所看到的是,当回调函数被设置时它总是 returns '1' 而当它没有被设置时总是 '0'。

glfwSetErrorCallback returns 一个被解释为整数的指针。

我认为这 post 会有所帮助:How to print function pointers with cout?