Lokale Konstanten in C

Gast #55161
Lesenswert?
• ▲
▼
Hallo alle miteinander,

da Ihr mir bereits einmal weitergeholfen habt, versuche ich es jetzt
ein weiteres mal. Ich moechte in C (Keil-Compiler) in versxchiedenen
Funktionen lokale Konstanten definieren, welche denselben Namen haben.
Dies geht mit #define xxx aber nicht. Weiss jemand einen anderen Weg um
dies zu erreichen. Anbei ein kurzes Beispiel:

#include <REG51CC01.H>
#include <stdio.h>




void func1(void)
{
#define OFFSET_X 20
char x;

  x = OFFSET_X;
  // .....
}

void func2(void)
{
#define OFFSET_X 30
char x;

  x = OFFSET_X;
  // .....
}



void main(void)
{
  func1();
  func2();
}


Besten Dank im Voraus und
Gruesse
Eugen
#55164
Lesenswert?
• ▲
▼
BYTE const offset_x=10;

sollte man auf MCs besser nicht verwenden. Es erzeugt nämlich eine
richtige Variable, d.h. es belegt kostbaren Speicherplatz und auch
Code, um den Wert zuzuweisen.

#define

wird dagegen schon zur Compilezeit aufgelöst, belegt daher keinerlei
Ressourcen.
Und wenn es sich um verschiedene Werte handelt, dann sollte man sie
auch besser verschieden nennen. Ansonsten ergibt sowas bei größeren
Programmen schnell mal einen Fehler.

Z.B.:

#define OFFSET_X_1 20
#define OFFSET_X_2 30


Peter
Gast #55165
Lesenswert?
• ▲
▼
sehe ich auch so. Da Konstanten nun mal Konstanten sind und die
entsprechende Anzahl Bytes im Programmspeicher so oder belegen, macht
es wirklich keinen Sinn, global und lokal verschiedene Werte für
denselben Namen zu benutzen.
Lokale Variable benutzt man letztendlich auch nur, um durch overlay RAM
zu sparen bzw. nach Möglichkeit während der Routine die Variablen in
Registern zu halten.
Gleiche Namen vermeide ich da eigentlich auch, von "loop" mal
abgesehen. Wenn 2 Sachen verschiedene Aufgaben haben, warum sollten sie
dann den gleichen Namen benutzen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren