Einsatz von Macros
Mit Makros soll das Programm etwas flexibler gestaltet werden:
-
Mit den Makros DIM_M und DIM_N sollen Konstanten für die Matrix-Dimensionen definiert werden. Default-Werte dafür sollen jeweils 6 und 8 sein. Beim Übersetzen sollen die aber überschrieben werden können. Mit
gcc -Wall -DDIM_M=10 -DDIM_N=12 -o initmatrix initmatrix.c
sollen diese zum Beispiel auf 10 und 12 gesetzt werden.
-
Mit dem Makro ROWMAJOR soll gesteuert, ob die Matrix zeilen- oder spaltenweise gespeichert werden soll. Ist ROWMAJOR nicht definiert oder definiert als 0, soll die Matrix \(A\) spaltenweise im Speicher liegen und sonst zeilenweise. Abhängig davon sollen Makros INCROW_A und INCCOL_A definiert werden.
-
Im Hauptprogramm sollen beim Aufruf der Funktionen die Makros DIM_M, DIM_N, INCROW_A und INCCOL_A verwendet werden.
Ändert das vorige Programm entsprechend um. Übersetzt das Programm für jeweils so, dass die Makros jeweils mit
-
DIM_M=6, DIM_N=8, ROWMAJOR=0
-
DIM_M=6, DIM_N=8, ROWMAJOR=1
-
DIM_M=8, DIM_N=6, ROWMAJOR=0
-
DIM_M=8, DIM_N=6, ROWMAJOR=1
vordefiniert sind. Schaut euch auch jeweils die Ausgabe des Präprozessors an. Beispielsweise mit
gcc -E -Wall -DDIM_M=6 -DDIM_N=8 -DROWMAJOR=0 -o initmatrix initmatrix.c
für die erste Konfiguration.
Falls ihr es nicht schon vorher das Problem erkannt habt, wird bei der Ausgabe der Diagonal ein Problem auftreten. Wie kann das behoben werden.