Tylko stara nazwa jest nieaktualna, a nie funkcja i tylko w Visual Studio, a nie w POSIX.
Zasadniczo powodem jest to, że mkdir
nie jest zdefiniowana jako funkcja biblioteki uruchomieniowej w standardzie ISO C++, a niestandardowe funkcje biblioteki wykonawczej powinny zaczynać się od podkreślenia. W związku z tym Microsoft dodał podkreślenie do wszystkich niestandardowych nazw funkcji w bibliotece środowiska wykonawczego. Większość z nich jest funkcjami podobnymi do POSIX-owych, chociaż jest kilka specyficznych dla Windows.
Odcinek standardem, który określa identyfikatory, które są zarezerwowane do użytku przez wdrożenie jest 2.10, pkt 3. O ile mi wiadomo, średnia nie wyraźnie państwo, że realizacja nie może korzystać z innych identyfikatorów, ale przypuszczalnie wynika to z faktu, że taka implementacja nie byłaby w stanie zbudować legalnego programu w C++, który używa tej samej nazwy w niekompatybilny sposób.
W tym konkretnym przypadku, to jest prawda, jeśli program zawiera odpowiednie nagłówki wdrożenia zdefiniowane, więc nie jestem przekonany, że ISO C++ faktycznie wymagają Visual Studio potępiać starych nazw, ale wydaje się, że Microsoft albo uważał, że tak, albo że używanie zastrzeżonych identyfikatorów jest najlepszą praktyką. (Albo, że jest w stanie skompilować źródła POSIX jak jest powinno się zniechęcać; wybierać!)
Dodatkowa uwaga: Chciałbym założyć, że jest to również możliwe, aby konflikt nazewnictwa powodować problemy podczas linkami do bardziej skomplikowana programów, nawet jeśli nagłówki zdefiniowane w ramach implementacji nie są uwzględnione. Nie jest jednak jasne, czy usunięcie funkcji rzeczywiście pomaga w tym przypadku, ponieważ stare nazwy są nadal obecne w bibliotece. (Są one jednak w innym pliku .lib, a być może, że poprawia sprawy jakoś.)
You can download the November 2014 working draft of the current ISO C++ standard here.
odpowiedź w tym wątku może pomóc: http://stackoverflow.com/questions/814975/getch -jest-zdeklarowany – object
czy patrzyłeś na to: ISO/IEC 14882: 2011 (E)? – HDJEMAI
'mkdir' nie jest częścią standardu ISO, a zgodnie ze standardem ISO wszystkie niestandardowe funkcje zapewniane przez bibliotekę środowiska wykonawczego mają zaczynać się od podkreślenia. W związku z tym Microsoft dodał podkreślenie do wszystkich funkcji podobnych do POSIX (i innych niestandardowych funkcji) w bibliotece środowiska wykonawczego. Naprawdę nie ma w tym nic ważniejszego - tylko stare nazwy funkcji są przestarzałe, a nie same funkcje i dotyczy tylko Visual Studio, a nie POSIX. –