const char*, extern const char*, My Custom Library

PaulS:
The extern keyword does NOT pass a value. It makes a variable declared in another file available in the file containing the extern keyword.

It's exactly this kind of confusion that can be made more clear if there's a distinction made between define and declare. The extern keyword allows the compiler to construct a declaration, or an attribute list (e.g., its type, its scope, its ID), for a variable that is defined in another file. The definition of that variable is in some other file and means that its memory address is unknown to the compiler in the current file. The extern keyword is simply saying: "This variable is defined and has memory allocated for it in some other file, but let me use it in this file as..." followed by that variable's attribute list. It's the linker's responsibility to resolved the extern memory address. Simply stated, declarations are attribute lists (i.e., the properties of the variable) while a definition has both the attribute list, but also defines storage for the variable. The extern keyword simply allows the attribute list to be known in a file other than the file where the variable is defined.