Declarando una variable global `extern const int` en el encabezado pero solo` int` en el archivo fuente

Estaba experimentando con GCC y descubrí que puedes declarar variables externasconst en archivos de encabezado pero manténgalos mutables en los archivos de implementación.

EDITAR: Esto en realidad no funciona. La única razón por la que obtuve mi código de prueba para compilar fue porque no incluí "header.h" en "header.c".

header.h:

#ifndef HEADER_H_
#define HEADER_H_

extern const int global_variable;

#endif

header.c:

int global_variable = 17;

Esto parece una muy buena característica para usar para mantenerglobal_variable solo lectura para los usuarios deheader.h pero manteniéndolos modificables por la implementación (header.c)

NOTA: El siguiente código es solo un ejemplo de cómo esta forma de declarar impedirá la asignación aglobal_variable.

#include "header.h"

int main(void)
{
    global_variable = 34; /* This is an error as `global_variable` is declared const */
    return 0;
}

Porque nunca antes había visto una técnica en la práctica. Empiezo a preguntarme si es válido.

¿Es este comportamiento bien definido o es un error del que GCC no me advierte?

Respuestas a la pregunta(2)

Su respuesta a la pregunta