Solo il vecchio nome è deprecato, non la funzione e solo in Visual Studio, non in POSIX.
In pratica, il motivo è che mkdir
non è definito come una funzione di libreria di runtime nello standard ISO C++ e che le funzioni di libreria di runtime non standard iniziano con un trattino di sottolineatura. Di conseguenza, Microsoft ha aggiunto il carattere di sottolineatura a tutti i nomi di funzioni non standard nella libreria di runtime. Molte di queste sono funzioni simili a POSIX, sebbene ce ne siano alcune specifiche per Windows.
La sezione dello standard che definisce gli identificatori che sono riservati per l'utilizzo da parte l'implementazione è 2.10, paragrafo 3. Per quanto ne so, la norma non esplicitamente stato che l'attuazione non è possibile utilizzare altri identificatori, ma presumibilmente è implicito nel fatto che una tale implementazione non sarebbe in grado di costruire un programma C++ legale che capita di usare lo stesso nome in modo incompatibile.
In questo caso particolare, ciò è vero solo se il programma include i relativi intestazioni definito dall'implementazione, quindi non sono convinto che ISO C++ ha infatti richiedono Visual Studio deprecare i vecchi nomi, ma sembra che Microsoft credeva che lo fosse, o che l'uso di identificatori riservati fosse la migliore pratica. (O che essere in grado di compilare fonte POSIX-si dovrebbe essere scoraggiato; scegliete voi!)
Nota aggiuntiva: vorrei presumere che è anche possibile che un conflitto di denominazione a causare problemi durante il collegamento per più complicato programmi, anche quando le intestazioni definite dall'implementazione non sono incluse. Tuttavia, non è chiaro che la deprecazione delle funzioni aiuti effettivamente in questo caso, poiché i vecchi nomi sono ancora presenti nella libreria. (Essi sono, tuttavia, in un file LIB diversa, e forse per questo migliora le cose in qualche modo.)
You can download the November 2014 working draft of the current ISO C++ standard here.
fonte
2015-10-27 01:55:54
la risposta in questa discussione potrebbe aiutare: http://stackoverflow.com/questions/814975/getch -è-deprecato – object
hai pensato a questo: ISO/IEC 14882: 2011 (E)? – HDJEMAI
'mkdir' non fa parte dello standard ISO e secondo lo standard ISO tutte le funzioni non standard fornite dalla libreria di runtime devono iniziare con un trattino basso. Di conseguenza, Microsoft ha aggiunto il carattere di sottolineatura a tutte le funzioni simili a POSIX (e altre funzioni non standard) nella libreria di runtime. Non c'è davvero niente di più - solo i vecchi nomi delle funzioni sono deprecati, non le stesse funzioni, e si applica solo a Visual Studio, non a POSIX. –