Ich verwendete eine Header-Datei in meinem Projekt, die die folgenden Definitionen hatte:
%Vor% Das __I
wird in einer anderen Header-Datei wie folgt verwendet:
Meine Frage ist, warum die __I
in C constant gemacht werden sollte, aber nicht in C ++? Sie können immer noch den Wert ändern, auf den CR zeigt, da Sie die Adresse haben, aber es ist nur kurios, warum die Definition von __I
anders ist.
Für alle, die interessiert sind, worum es geht,
Die __I
definiert sind von IAR Embedded Workbench ARM für Cortex-M4
, und die Struktur ist von Texas Instruments LM4F120H5QR CMSIS-Dateien.
In C ++ sind const
Variablen im Dateibereich standardmäßig auf statische Verknüpfungen eingestellt, was für GPIOs mit Memory-Mapping nicht wünschenswert wäre. Der "richtige" Fix dafür ist das extern
Schlüsselwort, aber das kann hier nicht verwendet werden, da __I
offensichtlich auch mit Klassenmitgliedern arbeiten muss. Wenn also const
eliminiert wird, wird die Standardverknüpfung extern
wie gewünscht verwendet.