define()

Pherseus

Erfahrenes Mitglied
Hi,

hat das verwenden der Funktion Define irgendwelche nachteile? Insbesonder hinsichtlicht compatiblität und Performance ?
 
Nein! Im Grunde nicht, du kannst den Content nur zur Laufzeit nicht mehr ändern, wie bei ner Variable!
 
Dass würde mich auch interressieren. Es existieren keine Konstanten Variablen ausser man legt sich seine Definition von Konstanten Variablen so zurecht dass es passt.
  1. Konstanten die von System zu System anderst sein können (zB Java mit dem seperator)
  2. Konstanten die mit dem Schlüsselwort const angelegt werden
  3. ...

Alles in allem Schwachsinn da Konstanten per Definition konstant sind und Variablen per Definition veränderlich.
 
Wenn ich mich recht erinnere gibt es bei C solche konstanten Variablen. Was es damit genau auf sich hat weiss ich aber auch nicht genau.
Ich koennte mir vorstellen, dass es eine Variable ist die einen festen (also konstanten) Bereich im Speicher beansprucht und nicht, wie so vieles unter C, irgendwo im Speicher assoziiert wird.
 
Hier mal ein Beispiel, was meiner Meinung nach eine konstante Variable sein sollte. Natuerlich in C.

C:
const char *virname;
...
ret=cl_scandesc(fileno(scantmpfile),&virname,NULL,node,&limits,CL_SCAN_STDOPT | CL_SCAN_BLOCKMAX);
Wenn man das Schluesselwort "const" wegliesse haette man einen simplen Zeiger auf einen char.
Dieser muesste aber vor Verwendung alloziert und nach Verwendung wieder freigegeben werden.
Zum Beispiel so:
C:
part1=malloc(strlen(data)-strlen(strstr(strstr(data,"Subject:"),"\n")+1)+1);
...
free(part1);
*virname aus dem Beispiel oben jedoch wird nicht alloziert und auch nicht wieder freigegeben. Wenn ich mich recht erinnere fuehrt das sogar zu Fehlern.
 
Zurück