Nicht-integrale statische Konstanten in Klassen und ihr Kompilierungsfehler
In C wird versucht, ein statisches const-Element mit einem nicht-integralen Element zu definieren B. double, innerhalb einer Klasse kann zu Kompilierungsfehlern führen. Dieses Verhalten mag rätselhaft erscheinen, da in diesem Zusammenhang ganzzahlige Typen (z. B. int, unsigned) zulässig sind.
Der Grund für diese Diskrepanz liegt in der Art und Weise, wie der Compiler mit Konstanten umgeht. Bei ganzzahligen Typen fügt der Compiler die Konstante normalerweise überall dort ein, wo sie verwendet wird, sodass kein Speicherort erforderlich ist. Allerdings benötigen nicht-ganzzahlige Konstanten wie Doubles typischerweise eine Speicheradresse zur Laufzeit.
Um sicherzustellen, dass ein statisches const-Mitglied mit einem nicht-ganzzahligen Typ ordnungsgemäß definiert ist, wird empfohlen, es in einem Header zu deklarieren Datei und definieren Sie sie in einer separaten Quelldatei. Auf diese Weise erscheint die Definition in einer einzigen Übersetzungseinheit, wodurch mehrere Definitionen verhindert werden.
Während der Compiler möglicherweise nicht ganzzahlige Konstanten auf höheren Optimierungsebenen wie -O1 in g optimiert, ist die separate Deklaration und Definition von Konstanten erforderlich immer noch der portabelste Ansatz für plattformübergreifende Kompatibilität.
Das obige ist der detaillierte Inhalt vonWarum kann ich in Klassen in C keine nicht ganzzahligen statischen Konstanten definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!