W sumie nie myślałem, że będę o to pytać, no ale nawet niekoniecznie przydatnej na uczelni nauki nigdy za wiele.
Mam problem, jak napisać funkcję void debugowanie(arg1, arg2, arg3)
(powiedzmy, taka nazwa ;) ), która będzie wypisywać arg1, arg2, arg3 do konsoli.
Problemem jest dokładnie to, że chciałbym móc przekazać do tej funkcji argumenty różnych typów (tzn. nie zawsze const char *
lub char *
). To znaczy - arg1
i arg2
niech będą const char *
, bo akurat tak mi potrzeba, a arg3
niech będzie argumentem o typie zależnym od tego, co akurat mi potrzeba wypisać.
Na przykład, chcę wywołać tę funkcję tak:
int i = 9;
debugowanie("jakisNapis ", "i=", i);
I teraz: w definicji tej funkcji nie mogę użyć printf
, ponieważ printf
powinien mieć format specifier, który powinien być znany na etapie kompilacji, jak mniemam (mylę się?). Jeśli nie, to jak w takim razie "wypisać" format specifier? Przecież nie wywołam tak: debugowanie("i=", "%d", i)
, bo nie mam jak wpisać tego "%d"
w printfie
.
Jak to zrobić? Czy w ogóle się da, czy muszę zawsze konwertować/rzutować na odpowiedni typ przy wywołaniu ( char * str; sprintf(str, "%d", i); debugowanie("jakisTekst", "i=", str)
) ?
Przepraszam za ewentualne podstawowe błędy.