Forum: Compiler & IDEs GCC/Atmel Studio/Subversion : Unique Identifier erzeugen


von Nicolas S. (Gast)


Lesenswert?

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

von Konrad (Gast)


Lesenswert?

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.

von Walter T. (nicolas)


Lesenswert?

Naja, dann habe ich nichts gewonnen. Muß ich immer noch von Hand darauf 
achten, kein Element des Enums zweimal zu verwenden.

von Fabian O. (xfr)


Lesenswert?

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

von Walter T. (nicolas)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.