I read a few posts and concluded that extern tells compiler that \"This function exists, but the code for it is somewhere else. Don\'t panic.\" But how does the linker know
The simple answer is that "the compiler doesn't need to know, but the linker has to be able to find it". Through multiple .o files, or through libraries, the linker has to be able to find a single definition of the GrCircleDraw function.