Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Waardes weergeven
Uiterlijk
Het is zeer handig om getallen in decimaal en hexadecimaal te kunnen afdrukken.
Hiervoor definieren we de functie String_Format
in string.c
(en de declaratie in string.h
):
/kernel/src/string.c
#include <string.h>
// Formatteert de gegeven format-string en argumenten.
achar* String_Format(const achar* format, ...)
{
va_list args;
achar buffer[1024];
va_start(args, format);
String_FormatBuffer(buffer, format, args);
va_end(args);
return buffer;
}
// Formatteert de gegeven format-string <format> en de argumenten <args> en plaatst
// het resultaat in <buffer>. Als de buffer niet groot genoeg is, treed er een buffer overflow op.
// De syntax van <format> is {i:F} waarbij i de index van het argument is (het eerste argument
// heeft index 0) en F de format-string is (bijv. hexadecimaal is 'X').
unint String_FormatBuffer(achar* buffer, const achar* format, va_list args)
{
...
}
TODO: Wat is va_list, va_start, va_end, va_arg etc... Hulpfuncties?