Erstellen von C ++ Literale mit Präfixe und Suffixe

Das spart Zeit und Aufwand ist Teil der Grund, warum Sie Literale verwenden. Es ist eine Abkürzung Weg Literale zu schaffen und sicherzustellen, dass Sie die richtige Konstante Typ erhalten. Viele der Standard-Literale bieten Ihnen ein Präfix oder Suffix Sie verwenden können, um auf sie zuzugreifen. Genau wie das Präfix oder Suffix interpretiert wird, hängt davon ab, wie Sie es verwenden.

Zum Beispiel kann ein Suffix U bedeuten könnte ein unsigned int wenn sie mit einem verwendet int Wert, während ein Präfix U bedeuten könnte ein char32_t const Zeiger, wenn sie mit einer Zeichenfolge verwendet. Die Tabelle zeigt eine Liste der Präfixe und Suffixe, die meisten Compiler unterstützen.

Standard-Präfixe und Suffixe
DatentypPräfixSuffixResultierende Typ
int U oder uunsigned int
int L oder llange
int UL, UL, UL, UL, LU, Lu, Lu oder luunsigned long
int LL oder lllange lange
int ULL, Ull, ULL, ull, LLU, Llu, Llu oder lluunsigned long long
doppelt F oder fschweben
doppelt L oder llong double
verkohlenL wchar_t
verkohlenU char32_t
verkohlenu char16_t
SchnurL Wchar_t const *
SchnurU char32_t const *
Schnuru char16_t const *

die Präfixe und Suffixe verwenden, können Sie viel Zeit sparen. Das Präfixe und Suffixe Beispiel hier zeigt, wie Sie sie verwenden würde Variablen verschiedener Art zu erstellen.

#einschließen # include using namespace std-using namespace abi-char * demangle (const char * Object) {int-Status-char * Realname-Realname = __cxa_demangle (Object, 0, 0, Der Status) -return RealName-} int main () {auto Int1 = 23-auto Int2 = 23L-auto Int3 = 23U-auto Int4 = 23u-auto String1 = "Hallo" -auto String2 = L "Hallo" -auto String3 = U "Hallo" -auto String4 = u "Hallo" -cout lt; lt; Int1 lt; lt; endl lt; lt; Demangle (typeid (Int1) .name ()) lt; lt; Endl-cout lt; lt; Int2 lt; lt; endl lt; lt; Demangle (typeid (Int2) .name ()) lt; lt; Endl-cout lt; lt; Int3 lt; lt; endl lt; lt; Demangle (typeid (Int3) .name ()) lt; lt; Endl-cout lt; lt; Int4 lt; lt; endl lt; lt; Demangle (typeid (Int4) .name ()) lt; lt; Endl-cout lt; lt; string1 lt; lt; endl lt; lt; Demangle (typeid (String1) .name ()) lt; lt; Endl-cout lt; lt; string2 lt; lt; endl lt; lt; Demangle (typeid (String2) .name ()) lt; lt; Endl-cout lt; lt; string3 lt; lt; endl lt; lt; Demangle (typeid (String3) .name ()) lt; lt; Endl-cout lt; lt; String4 lt; lt; endl lt; lt; Demangle (typeid (String4) .name ()) lt; lt; Endl-return 0-}

Das Demangle () Funktion ist GCC spezifisch. Die meisten C ++ Compiler Mangel (Ändern die Schreibweise) Schlüsselwörter und Informationen geben für jemanden eine Anwendung schwerer zu disassemblieren (Konvertieren von Maschinensprache zurück in C ++ Quellcode).

Um Typinformationen zu ermitteln, verwenden Sie die typeid () Funktion zu erstellen Typeinfo Struktur. Das Name() Funktion gibt den Typnamen in dieser Struktur gefunden es auf dem Bildschirm angezeigt werden soll. Allerdings ist dieser Name verstümmelt, so dass Sie die verwenden müssen Demangle () Funktion, es zu ändern, um seine ursprüngliche lesbarer Form zurück.

Die meisten Beispiele in diesem Kapitel verlassen sich auf die Auto Stichwort, um automatisch die Variablentyp durch eine UDL erstellt erkennen. Dieses Schlüsselwort ist ein wichtiges Merkmal für neuere C ++ Anwendungen, die Nutzung der neuen Erweiterungen machen, die die Sprache bietet.

In diesem Fall verwendet der Code die auto Schlüsselwort die Ausgabe des literal Präfix oder Suffix zu erfassen, so dass die Variable für eine Situation automatisch der richtige Typ ist. Wenn Sie diese Anwendung ausführen, sehen Sie die folgende Ausgabe:

23int23long23unsigned int23unsigned intHellochar const * 0x46e02cwchar_t const * 0x46e038char32_t const * 0x46e02cchar16_t const *

Auch wenn die Daten die gleiche ist in jedem Fall die verwendeten Variablen, um die Daten zu halten, unterscheiden sich wegen des Präfix oder Suffix verwendet, um die Variable zu erstellen. Beachten Sie, dass das gleiche Präfix oder Suffix unterschiedliche Auswirkungen hat auf den Typ der Variablen abhängig, auf die sie angewendet wird. Darüber hinaus manchmal der Fall, der Präfix oder Suffix Angelegenheiten (wie bei einem String in der Arbeit).

Einige Compiler wie GCC, umfassen Nicht-Standard-Erweiterungen für numerische Daten, die Sie mit Sorgfalt verwenden müssen. die Popularität von GCC und die Notwendigkeit dieser Zahlenformate gegeben, können Sie feststellen, dass Sie unbedingt tun müssen, um sie zu Zeiten nutzen. Hier sind einige gemeinsame Suffix Erweiterungen von GCC-Implementierungen zur Verfügung gestellt:

  • d: doppelt

  • df: _Decimal32

  • dd: _Decimal64

  • dl: _Decimal 128

  • w: __float80

  • q: __float128

  • ich: Doppel Komplex

  • fi: Schwimmer-Komplex

Menü