2015-01-07 30 views
19

Vedo che VS2013 ha aggiunto il supporto per un gran numero di funzioni principali del linguaggio C99. Ora supporta letterali composti, inizializzatori designati, macro variadici, dichiarazioni e dichiarazioni intercalate solo per citarne alcuni.Qual è lo stato ufficiale del supporto C99 in VS2013?

Ciò indica che gli sviluppatori VS hanno compiuto seri passi verso il supporto C99 in Visual Studio. Tuttavia, alcune di queste funzionalità non fanno parte del linguaggio C++, che sembra essere una notevole deviazione dalla strategia di sviluppo precedentemente annunciata (ad esempio "il compilatore VS C supporta solo le funzionalità C99 che fanno anche parte del C++").

Quindi, c'è qualche parola ufficiale o semi-ufficiale su cosa sta succedendo? Non riesco a trovare nulla di definitivo in rete. Queste caratteristiche di C99 erano state annunciate ufficialmente? C'è qualche impegno a continuare il supporto C99 in VS? O è solo una sorta di sviluppo non ufficiale "canaglia"?

+0

Herb Sutter menzionato hanno aggiunto abbastanza per essere in grado di compilare ffmpeg su VS2013, nessuna idea di come sono venuti con tale requisito. – Praetorian

+0

http://msdn.microsoft.com/en-us/library/hh409293.aspx – BLUEPIXY

+0

Ho collegato al loro recente C99 [qui] (http://stackoverflow.com/a/18521417/1708801) –

risposta

10

Ci sono alcune discussioni ufficiali pubblici di questo da parte degli sviluppatori di Microsoft, il C++ Conformance Roadmap che dice:

Herb ha anche annunciato che, in risposta alle richieste dei clienti, la versione RTM includerà anche alcuni tattico C99 estensioni del linguaggio quando compilazione del codice C, in modo che alcune librerie di comunità popolari (tra cui FFmpeg) saranno ora in grado di compilare con Visual C++ 2013.

quindi questo ha il supporto ufficiale, ma è strategico, da quello che posso dire dai seguenti articoli più supporto dovrà competere con altre priorità.

Abbiamo la C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013 Blog entry by STL:

Inoltre, alcune caratteristiche C99 Nucleo lingua verrà implementato in 2013 RTM:

  • C99 _Bool

  • C99 letterali composti

  • C99 designato in itializers

  • C99 dichiarazioni di variabili

e C99 library support in Visual Studio 2013 blog entry by Pat Brenner che si apre con:

In questo post del blog voglio condividere alcune informazioni sul supporto C99 aggiunti alla corsa C -time library in Visual Studio 2013.

e termina con:

Sappiamo che questo non è il supporto completo per la libreria C99 funzioni. Per quanto a nostra conoscenza, i pezzi mancanti sono questi:

  • L'intestazione tgmath.h manca.Il supporto del compilatore C è necessario per questa intestazione. Si noti che l'intestazione ctgmath è stato aggiunto-questo è possibile perché tale intestazione non richiede gli header-solo la ccomplex e CMATH intestazioni tgmath.h.
  • Manca l'intestazione uchar.h. Questo è dal C Unicode TR. Diversi indicatori di formato nella famiglia printf non sono ancora supportati.
  • Le funzioni snprintf e snwprintf mancano stdio.h e wchar.h.

che è un po 'più interessante in quanto STL affronta attivamente commenti al blog e sono difficili da riassumere ma possiamo vedere le aggiunte future dipenderanno priorità concorrenti.

Grazie a cremno per aver ricordato un altro post del blog C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1 che dice:

In Visual Studio "14" PTC abbiamo pienamente attuato la libreria standard C99 , con l'eccezione delle funzioni di libreria che dipende dalle funzionalità del compilatore non ancora supportate dal compilatore Visual C++ (in particolare, <tgmath.h> non è implementato). Ci sono indubbiamente alcuni problemi di conformità rimanenti - sappiamo di pochi, compresa quella _exit manca e wcstok ha la firma errata, e stiamo lavorando per risolvere questi. Se trovi un bug o una funzionalità mancante , segnalalo su Microsoft Connect. Se si segnala bug ora, c'è una buona possibilità che saremo in grado di risolverli prima RTM.

e ha molti dettagli che non possono essere facilmente riassunti.

+2

Tra l'altro, in VS2015 '' e ' snprintf()' sono disponibili. Ci sono anche altre modifiche relative al C99. Vedi [this] (http://blogs.msdn.com/b/vcblog/archive/2014/06/18/crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1.aspx) post precedente del blog. – cremno

+0

@cremno grazie! Ho esaminato questo aspetto un paio di volte per le risposte più vecchie su VLA e ho perso quella. –

Problemi correlati