www.mikrocontroller.net

Forum: Compiler & IDEs Gleiche Variablennamen in unterschiedliche C-Files


Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hab eine Frage an euch. Habe ein Programm, dass aus mehreren c- und 
h-Files besteht. Bisher habe ich immergedacht, dass die Variablen, die 
ich in einem c-File deklariere nur für dieses c-File gültig sind, aber 
jetzt habe ich gleiche Variablennamen in zwei c-Files und der Compiler 
mosert das an.
Ssymbol "my_value" redefined: first defined in "./calc_p.obj"; redefined in "./calc_v.obj"

Was habe ich falsch verstanden/gemacht?

Danke für eure Hilfe.

Ronny

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Frage ist wie du sie deklariere hast.

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variablen "static" deklarieren

Ronny schrieb:
> Bisher habe ich immergedacht, dass die Variablen, die
> ich in einem c-File deklariere nur für dieses c-File gültig sind

Das sind sie nur, wenn sie als "static" deklariert werden.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Global.

Im einem, wie auch anderem steht:
unsigned int my_value;

Autor: Clown (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Variablen müssen als static deklariert werden um nur innerhalb der 
Übersetzungseinheit sichtbar zu sein.
static int var;

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann schrieb:
> Das sind sie nur, wenn sie als "static" deklariert werden.

Ah, dann wird es wohl daran liegen. Aber nachteil daran ist, dass ich 
sie dann zur Laugzeit nicht mehr debuggen kann. Zumindest ist das beim 
CCE der Fall. - Warum auch immer.

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genauso wie der Debugger Schwierigkeiten hat geht es auch einem Menschen 
der dein Programm mal anschaut

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Witzbold! In Karnevalslaune, wie?

Der CCE+FET430UIF kann einfach keine static Variablen zur Laufzeit 
einlesen. Warum auch immer.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ronny schrieb:

> Der CCE+FET430UIF kann einfach keine static Variablen zur Laufzeit
> einlesen. Warum auch immer.

Dann beschwer' dich beim Hersteller, aber nicht hier.  Hier ist das
GCC-Forum, und GCC sowie seine Debugger haben kein Problem, ein
Feature, das es seit 40 Jahren in der Sprache C gibt, brauchbar zu
unterstützen.

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso zum Teufel auch nennst Du die Variablen dann nicht einfach 
unterschiedlich? Ist das zu naheliegend?

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mich nicht beschwert, sondern nur die Aussage gemacht, dass der 
Debugger mit static-Variablen Probleme macht...

Das Problem hat nichts mit meiner ursprünglichen Frage zu tun. Der 
Kompiler ist mit den static-Variablen zufrieden...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ronny schrieb:
> Ich hab mich nicht beschwert

Nur dumme Bemerkungen gemacht über Leute, die dir helfen wollten.

Weißt du, warum das hier das GCC-Forum ist und nicht das für jeden
beliebigen C-Compiler?  Weil hier die vesammelt sind, die sich mit
dem GCC auskennen.  Folglich werden sie, wenn du hier eine Frage
stellst, erstmal mit dem Wissen rangehen, was sie vom GCC kennen.
Dann brauchst du sie nicht beschimpfen, wenn sie die Unzulänglichkeiten
deiner Umgebung halt nicht kennen (und sich sowas vielleicht auch
nicht vorstellen können).

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WEr greift hier wen an?

Walter schrieb:
> genauso wie der Debugger Schwierigkeiten hat geht es auch einem Menschen
> der dein Programm mal anschaut

Hat Herr Walter meinen Code gesehen? Nein! Also. Das verstehe ich nicht 
als Hilfe. Bis zu diesem Kommentar war alles ok. Ich habe meine Frage 
beantwortet bekommen und Rückfragen beantwortet. Aber ans Bein pinkeln 
lasse ich mir nicht!


Jörg Wunsch schrieb:
> Weißt du, warum das hier das GCC-Forum ist und nicht das für jeden
> beliebigen C-Compiler?

Meine Frage war allgemein und sollte Compiler unabhängig sein. Und GCC 
ist das einzige Forum, dass sich mit meinem Thema beschäftig. Ich hab 
weder was mit PC-Programmierung am Hut, noch mit Codesammlung und 
Hardware schon drei mal nicht...
Mehr Themen gibt dieses Forum ja nicht her.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Nur dumme Bemerkungen gemacht über Leute, die dir helfen wollten."

Nein, es war eine dumme Bemerkung über jemand der NICHT helfen wollte.


Der einzige Fehler den Ronny gemacht hat war seinen Compiler nicht zu 
nennen. Den Streit angefangen hat
Autor: Walter (Gast)
Datum: 07.03.2011 09:22

und Ronny hat dann nur mit
"Witzbold! In Karnevalslaune, wie?" geantwortet. Fand ich eigentlich 
passend als Antwort auf den überflüssigen Beitrag von Walter.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für dein Verständnis. Wenigstens einer, der mich und den ganzen 
Dialog verstanden hat! ;)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ronny schrieb:

> Hat Herr Walter meinen Code gesehen? Nein! Also.

Wenn man in verschiedenen Modulen globale Variablen gleich benennt,
die aber am Ende etwas unterschiedliches sind, dann ist es, unabhängig
davon, wie dein Code aussieht, schon ein wenig verwirrend.  Davon musst
du dich nun auch nicht gleich angep***t fühlen.


> Meine Frage war allgemein und sollte Compiler unabhängig sein. Und GCC
> ist das einzige Forum, dass sich mit meinem Thema beschäftig.

Nein, "Mikrocontroller und Elektronik" ist dafür da, wenn es um
Controllerprogrammierung ohne GCC geht.

Am Ende hat sich gezeigt, dass die Frage doch nicht so compiler-
unabhängig war, wie's auf den ersten Blick scheint.  GCC hätte dir
unter Umständen übrigens gar keine Fehlermeldung geschmissen, sondern
nur nicht das getan, was du erwartest: beide globale Variablen wären
zur selben verschmolzen.  Diese Vorgehensweise ist als eine mögliche
Option vom C-Standard komplett gedeckt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.