Napište makro
is_digit(base, character)pro testování, zda je znak určený výrazem character
číslicí soustavy se základem daným base. Makro musí
korektně fungovat pro základy soustav od 2 do 36 a libovolné znaky. Pro
číslice s hodnotou vyšší než 9 používejte pro jednoduchost pouze velká
písmena anglické abecedy.
Příklady použití
if (is_digit(8,'8') != 0 { printf("Ano\n"); }
else { printf("Ne\n"); }
if (is_digit(10+6, '0'+4) != 0) { printf("Ano\n"); }
else { printf("Ne\n"); }
if (is_digit(30, '@') != 0) { printf("Ano\n"); }
else { printf("Ne\n"); }
//
// vede k výpisu následujícího
//
Ne
Ano
NeUpravte makro
#define LOG(fmt, ...) printf("[LOG] " fmt "\n", __VA_ARGS__)tak, aby tisklo i soubor a řádek, na kterém je použito.
K úkolu 7 z sedmého semináře
doprogramujte makro EMIT_SORT(type) které se expanduje na
definici třídící funkce pro type. Přitom předpokládejte, že
porovnáváci funkce pro type se jmenuje
compare_type (např. pro double je to
compare_double)