c - #define vs enum in einer eingebetteten Umgebung (Wie kompilieren sie?)

Translate

Diese Frage wurde zu Tode gestellt, und ich würde zustimmen, dass Aufzählungen der richtige Weg sind. Ich bin jedoch gespannt, wie Aufzählungen, die im endgültigen Code kompiliert werden - #Definitionen sind nur Zeichenfolgenersetzungen, aber fügen Aufzählungen der kompilierten Binärdatei etwas hinzu? Oder sind beide zu diesem Zeitpunkt gleichwertig? Gibt es einen noch so kleinen Vorteil bei der Verwendung von #defines, wenn das Schreiben von Firmware und Speicher sehr begrenzt ist?

Vielen Dank!

BEARBEITEN: Wie im Kommentar unten gefordert, meine ich mit eingebettet eine Digitalkamera.

Danke für die Antworten! Ich bin alles für Aufzählungen!

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Beide sindkonstante AusdrückeIn der Terminologie des Standards sollten sie daher zur Kompilierungszeit von jedem vernünftigen Compiler vollständig ausgewertet werden. Es würde einen böswillig pathologischen Compiler erfordern, um anderen Code zu generieren.

Quelle
Translate

Einenumist letztendlich nur eine ganze Zahl. Der Compiler gibt die Werte wie bei a weiterconst.

Quelle
Translate

Es ist unmöglich zu sagen, ohne ein Profil zu erstellen oder auf andere Weise zu messen.

ABER jeder anständige Compiler zeigt keinen signifikanten Unterschied. Darüber hinaus sollten Sie lesbaren, typsicheren Code immer effizientem, unlesbarem, von Gotcha durchsetztem Code vorziehen. Optimieren Sie die Effizienz nicht über die Lesbarkeit hinaus, bis Sie zwei Dinge bewiesen haben:

  1. Sie brauchen tatsächlich die Effizienzsteigerung
  2. Der Teil des Programms, den Sie ändern, wurde von einem Profiler als Engpass eingestuft.
Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor