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 arg3niech 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.