C Auslagern von Funktionen

DarkDragN

Lieutenant
Registriert
Dez. 2005
Beiträge
881
Guten Morgen!

Ich habe ein kleines Snakespiel programmiert, allerdings ist mir das ganze zu unübersichtlich und dementsprechend würde ich gerne einzelne Funktionen aus der main.c auslagern und über eine bzw. mehrere Header Files einbinden.

Nun mein Problem:

Wenn die Funktion ein mehrdimensionales Array erwartet, muss ich ja die Größe aller außer der Ersten angeben. Diese habe ich nun im Präprozessor der main.c definiert, was dann entsprechend nicht mehr geht. Wie kriege ich denn aber nun elegant ausgelagert oder geht das nicht mit mehrdimensionalen Arrays(was mich ein wenig wundern würde)?
 
Natürlich geht es, Stichwort Pointer. Ich versteh dein Problem allerdings nicht ganz (show code).
Aber du lagerst die Funktionen doch hoffentlich nicht in header files aus, oder? Sondern in weitere .c Dateien, mit den Funktionsprototypen in einer gleichnamigen header Datei....
 
Richtig, in andere .c Dateien auslagern war der Plan.

Code:
#define ROWS 22
#define COLS 79



/*Konstante für Pausen zwischen Neuberechnungen*/
#define SLEEPCONST 600
#define STARTDIVIDER 3

/*Structure*/

struct spart
{
    short int row;
    short int col;
};

//Einzelnen Funktionen
void printsnake (char field[][COLS],struct spart *snake,short int *snakelength);

Das wäre mal ein Ausschnitt aus den ersten Zeilen. Das 2D-Array wird in einer anderen Funktion generiert und dann enstprechend an die obere weitergegeben. Wenn ich da variablen aus dem Präprozessor weiter nutze, kann ich die dann ja auch über Pointer weiter geben, aber erstmal - wie sage ich der Funktion in der zb outsourced.c das field[][COLS], die COLS 50 groß ist?
 
Schau dir mal die main funktion an...

int main(int argc, char *argv[]);

Da hast du deine Erklärung.
 
meinSpiel.h :

#define ROWS 22
#define COLS 79

/*Konstante für Pausen zwischen Neuberechnungen*/
#define SLEEPCONST 600
#define STARTDIVIDER 3
...

andere.c :
include "meinSpiel.h"
...

main.c :
include "meinSpiel.h"
...
 
Zurück
Oben