I C ++, hva er forskjellen mellom "å bruke ll = lang lang" og "typedef lang lang ll"?


Svar 1:

Den første er et type alias og den andre er en typedefinisjon.

Et type alias erstatter ganske enkelt typen i kildesamlingen.

En typedef legger inn typen i leksikonet til kjente typer.

En typefef kan opprette typer, mens bruksklausulen bare oppretter et alias for en allerede kjent type.

I eksempelet ditt er det et skille uten forskjell, men kan ikke oversette lett for tilknyttede typer som pekere, referanser osv.

Jeg vil fraråde å bruke et slikt alias eller typedef da det er veldig ikke-informativt og det er mange akseptable allerede rundt alternativer som f.eks.

int64_t
uint32_t

[| U] intN_t

røye

int

flyte

du får disse og alle MAX- og MIN-konstantene ved å inkludere cstdint.

#include 

(stdint.h)


Svar 2:

Det er ingen som helst forskjell i mening. Standarden ([dcl.typedef]) sier:

Et typedef-navn kan også introduseres av en alias-erklæring. Identifikatoren som følger det brukende nøkkelordet blir et typefef-navn og den valgfrie attributt-spesifikator-sekvensen etter identifikatoren som tilhører det typedef-navnet. Den har samme semantikk som om den ble introdusert av typedef-spesifiseringen.

Erklæringen bruker ll = lang lang; er en alias-erklæring.