C164CI (Keil-Frage)

Gast #1641653
Lesenswert?

Hallo Forum,

ich bin gerade dabei mit dem Keil uVision3 einige Aufgaben für das 
Studium zu programmieren. Dabei habe ich generell immer ein Problem.

1. Generelle Frage:

Wenn ich mich in main() befinde, und eine variable global deklariere, 
(also noch vor main() die Variable deklariere) kann ich sie zwar in main 
ansprechen.

Wenn ich aber ein neues Modul mache z.B. eine Datei calcul.c welche 
verschiedene Unterprogrammroutinen enthält können diese Routinen nicht 
auf eine global deklarierte Variable zugreifen. Ich muß dann also die 
variable in meinem Modul auch noch mit "extern" bekannt machen.

Ist das richtig ?

2.

Wenn ich einen Haltepunkt in einem Unterprogramm setzte, beispielsweise 
auf eine Variable auf die ständig aufaddiert wird, sagt mir der Debugger 
"out of scope".

Was bedeutet das. Hat es damit etwas zu tun, daß der Debugger 
Modullokale Variablen nicht sehen kann ?

Wenn das stimmt, wie umgehe ich das dann. Ich denke zum einen dadurch, 
daß ich die Variable wieder mit extern vereinbare, was aber 
wahrscheinlich schlechter programmierstil ist. Würden hier Übergabewerte 
als Zeiger Abhilfe schaffen ???

Danke für eure Hilfe und ein schönes Wochenende !!
#1641723
Lesenswert?

Michael Brügge schrieb:
> Hallo Forum,
>
> ich bin gerade dabei mit dem Keil uVision3 einige Aufgaben für das
> Studium zu programmieren. Dabei habe ich generell immer ein Problem.
>
> 1. Generelle Frage:
>
> Wenn ich mich in main() befinde, und eine variable global deklariere,
> (also noch vor main() die Variable deklariere) kann ich sie zwar in main
> ansprechen.
>
> Wenn ich aber ein neues Modul mache z.B. eine Datei calcul.c welche
> verschiedene Unterprogrammroutinen enthält können diese Routinen nicht
> auf eine global deklarierte Variable zugreifen. Ich muß dann also die
> variable in meinem Modul auch noch mit "extern" bekannt machen.
>
> Ist das richtig ?

Kann man so machen, wird abersehr schnell unübersichtlich.
Besser ist es den 'calc'-Funktionen die entsprechenden Variablen zu 
übergeben und das ergebnis zurück zu liefern.

So bleiben deine Funktionen und C-Dateien unabhängig.


>
> 2.
>
> Wenn ich einen Haltepunkt in einem Unterprogramm setzte, beispielsweise
> auf eine Variable auf die ständig aufaddiert wird, sagt mir der Debugger
> "out of scope".
>
> Was bedeutet das. Hat es damit etwas zu tun, daß der Debugger
> Modullokale Variablen nicht sehen kann ?
>
> Wenn das stimmt, wie umgehe ich das dann. Ich denke zum einen dadurch,
> daß ich die Variable wieder mit extern vereinbare, was aber
> wahrscheinlich schlechter programmierstil ist. Würden hier Übergabewerte
> als Zeiger Abhilfe schaffen ???

Hab keine Ahnung von µVision, beim AVRStudio kommt das auch manchmal 
vor, dann stimmt aber das Debugg-File nicht mit dem geladenen File vom 
Controller überein. Oder sowas in der Richtung...

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