Heim >Backend-Entwicklung >C++ >Warum kann ich in Klassen in C keine nicht ganzzahligen statischen Konstanten definieren?

Warum kann ich in Klassen in C keine nicht ganzzahligen statischen Konstanten definieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 09:29:02560Durchsuche

Why Can't I Define Non-Integral Static Constants in Classes in C  ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn