================== 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 ---- CODE(type=txt)------------------------------------------- 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 ---- CODE(type=txt) ------------------------------------------------------------ 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. :navigate: up -> doc:index next -> doc:session04/page04 back -> doc:session04/page02