Antwort schreiben  Thema schreiben 
Verfasser Nachricht
SolidCakeS
Junior Mitglied
**


Beiträge: 20
Gruppe: User
Registriert seit: Feb 2011

Status: Offline
Danke erhalten: 0
Beitrag: #1
xPSP  Header.h includen, aber wo?

hallo, PSPKing Community!
Ich habe folgendes Problem:
ich will diese 3 dateien kompilieren:
main.c
header.h
laufen.c

Die datei header.h enthält integer, die sowohl in der main-datei selbst, als auch in der laufen-datei wichtig sind.

wenn ich header. h bei beiden Dateien "include", dann spuckt der compilor logischerweise aus, dass die variablen schon definiert sind.

Was kann ich tun?

Danke im Vorraus,
SolidCakeS!

22.02.2011 14:36
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #2
RE: Header.h includen, aber wo?

Du kannst die integer Variablen in der header Datei als "static" deklarieren.

z.B. static int zahl;


http://ps4dev.net.tc/ - the new german psp development site. Check it out!
22.02.2011 15:12
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Ceikor (Feb-22-2011)
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #3
xPSP  RE: Header.h includen, aber wo?

Variablen müssen wenn Sie in einer header deklariert werden mit dem zusatz extern angegeben werden.
Sollte dies nicht sein so ist diese deklariert und eine deklarierte variable darf nur einmal vorkommen ansonsten halt der Fehler.

Sollte Sie den Zusatz haben so muss Sie dennoch in einer der *.c deklariert werden.

bsp:

header.h

Code:
#ifndef HEADER_H
#define HEADER_H

extern int zahl;

#endif


main.c

Code:
....
.....
.....
int main(void)
{
int zahl = 5;
....
....
retun 0;
}


Hier kannst du die variable dann nutzen ohne Sie erneut zu deklarieren.

laufen.c

Code:
....
......
void testfunktion()
{
...
pspDebugScreenPrintf("Die Zahl lautet %i", zahl);
...
}


Ich hoffe das das eine gute Erklärung ist. ^^

EDIT: Mist PSP_Lord war schneller, natürlich geht es so auch^^

PS:@ Lord die abfrage und der vergleich funktionieren Wink

Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2011 15:18 von Ceikor.

22.02.2011 15:13
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
SolidCakeS (Feb-22-2011)
SolidCakeS
Junior Mitglied
**


Beiträge: 20
Gruppe: User
Registriert seit: Feb 2011

Status: Offline
Danke erhalten: 0
Beitrag: #4
xPSP  RE: Header.h includen, aber wo?

Ceikor :

EDIT: Mist PSP_Lord war schneller, natürlich geht es so auch^^

PS:@ Lord die abfrage und der vergleich funktionieren Wink


Er war zwar schneller, aber mit statischen variablen kann ich wenig anfangen, da ich die variablen ändern will

Danke!!

22.02.2011 15:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
anmabagima
Ex-Developer
****


Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009

Status: Offline
Danke erhalten: 530
Beitrag: #5
xPSP  RE: Header.h includen, aber wo?

Statisch heißt hier nicht, dass sie nicht änderbar sind...es heißt nur dass sie "persisitent" im speicher verbleiben auch wenn die Programmeinheit (wie ein unterprogramm) verlassen wird...

Für globale Variablen ist das fast egal...

Beispiel:

PHP-Code:
/* das ist die main.c */
static int st_i_1 0;
int i_1 = ;
//beides hat keinen wirklichen unterschied...
//ABER:
void funktion( ){
 static 
int st_i_2 0;
 
int i_2 0;

 
st_i_2 ++;
  
i_2++;
}

//wenn ich nun die funktion aufrufe wird st_i_2 um 1 erhöht und ist damit 1
//ebenso i_2
funktion( );

//wenn ich diese funktion nochmal aufrufe ist der wert von st_i_2 noch gültig...ein weiteres erhöhen macht daraus 2.
//i_2 ist wieder 0 und ein erhöhen führt dazu dass es wieder 1 ist...
funktion( ); 


Das nur als "Pseudo"-Code um "static" vielleicht etwas anschaulicher zu erklären ;O)

22.02.2011 15:48
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Ceikor (Feb-22-2011)
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #6
RE: Header.h includen, aber wo?

Naja, du kannst statischen Variablen immer noch neue Werte zuweisen, "static" sorgt ja dafür, dass eine Variable nicht immer neu initialisiert wird.

static int i = 0;

i = 2;

Ist legitim und funktioniert.

Edit: du warst schneller, Anmabagima Wink


http://ps4dev.net.tc/ - the new german psp development site. Check it out!

Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2011 22:46 von PSP_Lord.

22.02.2011 15:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Ceikor (Feb-22-2011)
SolidCakeS
Junior Mitglied
**


Beiträge: 20
Gruppe: User
Registriert seit: Feb 2011

Status: Offline
Danke erhalten: 0
Beitrag: #7
RE: Header.h includen, aber wo?

Oke! danke, jungs!
hab ich wohl was missverstanden.
im programm hab ich jetzt sowiso die lösung von Ceikor benutzt.
funktioniert einwandfrei!

22.02.2011 22:35
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP Will einen Updater mit Lua proggen, aber wie? SIM sk 2 1.752 08.09.2012 20:58
Letzter Beitrag: SIM sk
xPSP Homebrew lässt sich am PC, aber nicht auf der PSP starten!? Byter 1 1.596 29.01.2012 15:42
Letzter Beitrag: duLouser
xPSP Visual C++ und PSPDev: Neue Header? Schaschlix 3 1.406 22.07.2010 14:58
Letzter Beitrag: _Kai_
xPSP [LUA] RAM leeren, aber wie? Schaschlix 5 2.284 06.04.2010 13:35
Letzter Beitrag: Schaschlix
xPSP Frage zu Header Dateien auf der PSP psp_progger 3 1.386 23.03.2010 10:42
Letzter Beitrag: anmabagima

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang