Hallo zusammen, ich habe ein Projekt, das aus sehr vielen c-Quelldateien besteht und in dem ich projektweit eindeutige 7-Bit-Stempel erzeugen will, d.h. eine irgendwie festgelegte 7-Bit-Zahl darf projektweit nur einmal vorkommen und muß auch explizit im Quelltext suchbar sein. Hintergrund ist, daß ich diese 7-Bit zu Debugging-Zwecken verwenden will. Die Werte müssen nicht fortlaufend sein, es darf nur keine Duplikate geben. Gibt es eine Möglichkeit, projektweit Duplizierungen zu erkennen und auszumerzen? Ich nutze normalerweise eine Kombination aus ATmelStudio 6.1, TortoiseSVN und GCC - vielleicht enthält eines dieser Werkzeuge ja schon das, was ich suche? Viele Grüße Nicolas
Du kannst einen Enum-Typ in einem Header definieren.
1 | typedef enum UniqueId { |
2 | UID_BLA, |
3 | UID_BLUB, |
4 | UID_FOO
|
5 | } UniqueId; |
Wenn die Eintraege dezentral, etwa pro Komponente, gesammelt werden sollen, kannst Du auch zu sowas wie
1 | typedef enum UniqueId { |
2 | |
3 | #include "antrieb/EnumItems_UniqueId.h" |
4 | #include "display/EnumItems_UniqueId.h" |
5 | UID_FOO
|
6 | } UniqueId; |
greifen.
Naja, dann habe ich nichts gewonnen. Muß ich immer noch von Hand darauf achten, kein Element des Enums zweimal zu verwenden.
Vielleicht hilft Dir das:
1 | __COUNTER__
|
This macro expands to sequential integral values starting from 0. In conjunction with the ## operator, this provides a convenient means to generate unique identifiers. http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
Hallo Fabian, danke für den Tipp. Er geht auf jeden Fall in die richtige Richtung. Unpraktischerweise verewigt er sich nicht im Quelltext, ich müßte also immer im List-File nach der Stelle suchen. Jetzt noch etwas, was den Quelltext entsprechend verändert wäre ideal. Viele Grüße Nicolas
Nicolas S. schrieb: > Naja, dann habe ich nichts gewonnen. Muß ich immer noch von Hand darauf > achten, kein Element des Enums zweimal zu verwenden. Wieso?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.