2010-09-01 16 views

Odpowiedz

22
  1. Wyliczenie jest tylko wartością, a nie l-wartością. Nie ma adresu.
  2. Wyliczenie może być tylko stałą czasu kompilacji, a nie stałą czasu wykonywania.
  3. Wyliczenia nie dodają żadnego przyduszenia do pliku obiektu.
  4. Enums kompiluje się szybciej i zużywa mniej pamięci podczas kompilacji. Zwykle jest to pomijalne, ale jeśli robisz wystarczająco skomplikowane metaprogramowanie, może zacząć mieć znaczenie.

W ogóle, do rzeczy, które są stałe w czasie kompilacji, a nie z czasem przebiegu stałe, nie ma wadą przy użyciu enum, a to ma zalety dokonywania intencje absolutnie jasne i jest nieznacznie bardziej wydajne.

Edycja: Jeden inny przypadek użycia dla wyliczeń może uwiarygodniać kompilatorowi, czy funkcja powinna być oceniana w czasie wykonywania lub czasie kompilacji. Jeśli wynik funkcji zostanie przypisany do zmiennej stosu immutable, funkcja zostanie oceniona w czasie wykonywania. Jeśli użyjesz enum w tym samym zakresie, wynik zostanie oceniony podczas kompilacji.

4

IIRC w D jest mniej więcej taki sam, jak #define A B jest w C. Zawsze jest podporządkowany jako dosłowny w dowolnym wyrażeniu, które go używa.

Powiązane problemy