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

I’m learning GLFW 3.3, and, as it’s said in functions description:

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

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

Now what I’m trying to do is to understand what kind of value it is. I tried to understand it as if the return value was a pointer to a function, because, as said about GLFWerrorfun type in the documentation:

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

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

Here’s my code:

#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;
}

The first value written on the console is 0. I get it as the NULL was returned because no callback was set yet.

The second value written on the console is 1, and it confuses me: how did GLFWerrorfun return value was converted to an integer? All I see is that it’s always returns ‘1’ when the callback function was set and always ‘0’ when it wasn’t.

Answer

glfwSetErrorCallback returns a pointer wich is interpreted as an integer.

I think this post will help:How to print function pointers with cout?