Deklarieren einer globalen Variablen "extern const int" im Header, aber nur "int" in der Quelldatei
ch habe mit GCC experimentiert und festgestellt, dass Sie externe Variablen deklarieren könneconst
in Header-Dateien, aber in Implementierungsdateien veränderbar.
BEARBEITE: Das geht eigentlich nicht. Der einzige Grund, warum ich meinen Testcode kompilieren ließ, war, dass ich "header.h" nicht in "header.c" aufgenommen habe.
header.h:
#ifndef HEADER_H_
#define HEADER_H_
extern const int global_variable;
#endif
header.c:
int global_variable = 17;
Dies scheint eine sehr gute Funktion zu sein, um @ zu behalteglobal_variable
Readonly an die Benutzer vonheader.h
aber durch die Implementierung modifizierbar halten header.c
).
HINWEIS Der folgende Code ist nur ein Beispiel dafür, wie diese Art der Deklaration die Zuweisung zu @ verhinderglobal_variable
.
#include "header.h"
int main(void)
{
global_variable = 34; /* This is an error as `global_variable` is declared const */
return 0;
}
Weil ich noch nie eine Technik in der Praxis gesehen habe. Ich frage mich, ob es gültig ist.
Ist dies ein klar definierter Verhaltensfehler oder ist dies ein Fehler, vor dem GCC mich nicht warnt?