Variablensichtbarkeit

Gast #2864635
Lesenswert?
• ▲
▼
Ich habe fogendes Problem:

Ich soll ein Teilmodul für eine Gruppenarbeit schreiben. Und ich muss in 
diesem Modul Variablen deklarieren/definieren die in einem anderen Modul 
gelesen und auch verändert werden müssen.
Die Mainfunktion ist nicht Teil meines Moduls. Wie kann ich dieses 
Problem lösen?
Ich habe mir natürlich auch schon ein paar Gedanken gemacht:
1) GLOBALE VARIABLEN: aber die kann ich nur in der *.c-Datei definieren 
in der die main() steht und die schreibe ich ja nicht
2) mit Hilfe von Strukturen?

Ich habe mehrere C-Bücher gewälzt und leider keine richtige Antort 
gefunden.
Ich hoffe ihr könnt mir helfen.

Vielen Dank.
Jens
(Firma: privatfrickler.de) #2864650
Lesenswert?
• ▲
▼
Hallo,

so ganz verstehe ich das Problem noch nicht.

Wenn Du das unbedingt über Variablen lösen musst,
kannst Du die doch ganz normal in Deiner Header Datei
deklarieren und im Code, in der .c-Datei dann definieren.

Deine Kollegen importieren den Header und fertig.

Vlg
 Timm
Gast #2864657
Lesenswert?
• ▲
▼
> 1) GLOBALE VARIABLEN: aber die kann ich nur in der *.c-Datei
> definieren, in der die main() steht, und die schreibe ich ja nicht.

            ^                        ^  hier gehören Kommata rein

Nein. Variablen, die außerhalb von Funktionen deklariert werden, sind 
global, unabhängig davon, in welchem File sie stehen.

Damit sie in einem anderen File bekannt werden, musst Du sie dort als 
"extern" deklarieren (das kann man mit einem .h-File machen).
#2864659
Lesenswert?
• ▲
▼
Hallo Jens,
warum muß Dein Modul (Deine Funktion?) die Variablen selbst erzeugen? 
Oft werden die Variablen in der aufrufenden Funktion (z.B. main) erzeugt 
und von der aufgerufenen Funktion nur noch geändert (schau z.B. in 
Deinem C-Buch mal nach der Verwendung von "strncpy" oder "snprintf" oder 
so...).

Oder haben die Variablen unterschiedliche Größen und Dein "Modul" muß 
auch noch eine rudimentäre Speicherverwaltung mitbringen?

Viele Grüße
Nicolas
Gast #2864677
Lesenswert?
• ▲
▼
Hallo Jens, mach es doch mit getter- und setter-Funktionen.
Das ist, besonders in Gruppenarbeit, die sicherste Alternative, weil du 
einer Fehlbedienung durch die anderen Mitglieder vorbeugen kannst.
1
/****meincode.h****/
2
extern int setTime(int);
3
extern int getTime(void);
4

5
/****meincode.c****/
6
#include "meincode.h"
7

8
int time;
9

10
int setTime(int pTime) {
11
  if (time > 0) {
12
    time = pTime
13
    return 0;
14
  } else return 1;
15
}
16

17
int getTime(void) {
18
  return time;
19
}
20

21
...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.