Elaborating on the <code> const int four(void) { return 4; } </code> case: consider <code> char first(const char* text) { return text[0]; } </code>
Although text[0] is const-qualified, I can return it as a char just fine; I could likewise write <code> char first = text[0]; </code> without needing const-qualification.  That's exactly why I can also write <code> int n = four(); </code> without const qualification, hence the const qualification of <code> extern const int four (void); </code> is vacuous.
So, even with your declaration, calling code can perfectly happily store the function's return in a simple const char * variable, that isn't a const char * const.