Tak się zastanawiam, czy printf i scanf są w ogóle aktualnie wykorzystywane przez programistów C++ ?
0
7
Przez niektórych tak, ale źle się na to patrzy (brak silnego typowania). Jeśli programujesz w C++ i iostreamy są dla Ciebie zbyt wolne/nieprzyjemne w użyciu to raczej używasz bibliotek typu cppformat czy Boost.Fomat.
2
Przez niektórych tak, ale źle się na to patrzy (brak silnego typowania).
Dzisiejsze kompilatory potrafią sobie z tym poradzić.
C:\myprogs\cpp>copy con test.cpp
#include <stdio.h>
int main()
{
printf("%s", 777);
}
^Z
Liczba skopiowanych plików: 1.
C:\myprogs\cpp>gpp test.cpp -o test.exe -Wall
test.cpp: In function 'int main()':
test.cpp:4:19: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wformat=]
printf("%s", 777);
^
C:\myprogs\cpp>
4
To prawda, ale nie wszystkie kompilatory o tym mówią - a nawet jeśli, to nie zawsze są w stanie (np. z powodu użycia dynamicznych stringów formatujących - co jest złe ale się zdarza np. przy lokalizacji).
Ponadto, o czym zapomniałem wspomnieć w poprzednim poście, jeśli planujesz użyć typu o stałej wielkości, np. int32_t
, to musisz bawić się w różne wygibasy typu PRIu32
.