.--. .-'. .--. .--. .--. .--. .`-. .
:::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::
' `--' `.-' `--' `--' `--' `-.' `--'
all
und clean
-r
, -R
und -B
gebaut werdenCC
und CFLAGS
Makros-std=c11
-pedantic
-Wall
-Werror
-D_XOPEN_SOURCE=700
-Wconversion
-Wuninitialized
git push
abgegebenDie Programme für den Übungsbetrieb liegen im CIP unter /proj/i4sp1/bin/
. Dort findet ihr unter anderem das get-deadline
Skript, das euch das nächste Abgabedatum sagt.
Als Editor empfehle ich für den Anfang micro, ihr seid in SP aber nicht an einen Editor/eine IDE gebunden. Nehmt das womit ihr am besten klar kommt. Eine Liste mit den voreingestellten Tastenbelegungen von micro
findet ihr hier.
Es kann sehr schwer sein Fehler in C frühzeitig zu erkennen. Über die Jahre wurden jedoch einige Werkzeuge entwickelt, die euch das Leben etwas leichter machen.
Valgrind analysiert zur Laufzeit die Anwendung auf fehlerhafte Speicherzugriffe und Memory-Leaks. Beim kompilieren/linken ist nichts weiter zu beachten. Es kann jedoch hilfreich sein mit Debuginformationen (-g
) zu übersetzen.
# Empfohlene Flags:
Der Undefined Behavior Sanitizer kann zur Laufzeit Undefined Behavior im Programm erkennen. Undefiniertes Verhalten ist eine häufige Fehlerquelle da, wie der Name nahelegt, nicht definiert ist was der Compiler mit dem Code anstellt. Code der beim ersten Mal (scheinbar) funktioniert hat kann dadurch zu einem beliebigen Zeitpunkt an einer beliebigen Stelle Bugs hervorrufen. Beispiele sind Array-Zugriffe mit ungültigem Index, Nullpointer-Dereferencierung und Überläufe von Ganzzahlen mit Vorzeichen.
Der UBSan wird beim kompilieren durch den Compiler eingefügt:
# beim kompilieren:
# beim linken:
In einem Makefile
kann die Flag auch unter CFLAGS
übergeben werden.
In jedem Fall gilt zu beachten: Das Referenzsystem ist der CIP mit seinem Compiler und Tools. Eure Abgabe muss dort übersetzbar und ausführbar sein.
layout src
wird einem auch der Quellcode angezeigt.~/.local/bin/fman
abgelegt werden. Gegebenenfalls müsst ihr den Pfad noch zu eurer .bashrc
hinzufügen:# ~/.bashrc
PATH=" : /.local/bin/"
Dann könnt ihr das Skript einfach als Befehl in der Konsole verwenden:
Hier werden Seiten zu den einzelnen Tafelübungen zu finden sein.