Gibt es irgendeinen Grund, etwas "flüchtiges const" in C zu erklären, sondern nur "flüchtig" in C ++?

8

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:

%Vor%

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.

    
SoftwareDev 19.10.2014, 21:01
quelle

1 Antwort

7

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.

    
Ben Voigt 19.10.2014, 21:14
quelle

Tags und Links