Eu continuo lendo sobre C99 e C ++ 11 e todas essas coisas totalmente legais que estão sendo adicionadas ao padrão de linguagem que podem ser úteis um dia. No entanto, atualmente definhamos na terra de escrever C ++ no Visual Studio.
Alguma das coisas novas no padrão será adicionada ao Visual Studio ou a Microsoft está mais interessada em adicionar novas variantes do C # para fazer isso?
Editar: além da resposta aceita, encontrei o blog da equipe do Visual C ++:
E, especificamente, esta postagem nele:
Muito útil. Obrigado!
c++
visual-studio
visual-c++
c++11
c99
Colen
fonte
fonte
Respostas:
A MS tem uma série de respostas públicas a isso, a maioria delas culpando seus usuários. Como este:
https://devblogs.microsoft.com/cppblog/iso-c-standard-update/
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345360
Este é um estado de coisas muito triste, mas também faz sentido se você suspeita que o MS deseja bloquear os usuários: torna muito difícil portar códigos modernos baseados em gcc para o MSVC, o que pelo menos eu acho extremamente doloroso.
No entanto, existe uma solução alternativa: Observe que a Intel é muito mais esclarecida sobre isso. o compilador Intel C pode lidar com o código C99 e até tem os mesmos sinalizadores do gcc, tornando muito mais fácil portar o código entre as plataformas. Além disso, o compilador Intel funciona em estúdio visual. Então, descartando o MS COMPILER, você ainda pode usar o MS IDE que você parece achar que tem algum tipo de valor, e usar o C99 para o seu conteúdo.
Uma abordagem mais sensata é, honestamente, mudar para Intel CC ou gcc e usar o Eclipse para seu ambiente de programação. Portabilidade de código através do Windows-Linux-Solaris-AIX-etc geralmente é importante na minha experiência, e isso não é de todo suportado pelas ferramentas MS, infelizmente.
fonte
Herb Sutter é o presidente e um membro muito ativo do comitê de padronização C ++, bem como arquiteto de software no Visual Studio for Microsoft.
Ele está entre os autores do novo modelo de memória C ++ padronizado para C ++ 0x. Por exemplo, os seguintes papéis:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007 /n2197.pdf
tem seu nome nele. Portanto, acho que a inclusão de C ++ 0x no Windows está garantida enquanto H. Sutter permanecer na Microsoft.
Quanto ao C99 apenas parcialmente incluído no Visual Studio, acho que é uma questão de prioridades.
booleanoem C99 é risível, na melhor das hipóteses ... Veja http://david.tribble.com/ text / cdiffs.htm para mais informações)Então, eu seria a Microsoft, por que implementaria recursos que poucas pessoas usarão quando os mesmos recursos já são oferecidos em mais idiomas ativos da comunidade já usados pela maioria das pessoas?
Conclusão?
C ++ 0x será incluído, como extensão do VS 2008, ou na próxima geração (gerações?) Do Visual Studio.
Os recursos do C99 ainda não implementados não estarão nos próximos anos, a menos que algo dramático aconteça (um país cheio de desenvolvedores do C99 aparece do nada?)
Editar 14/04/2011
Aparentemente, o "país cheio de desenvolvedores C99" já existe: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^ _ ^
Ainda assim, o último comentário em: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 é claro o suficiente, eu acho.
Editar 03/05/2012
Herb Sutter deixou claro que:
A postagem do blog adiciona links e mais explicações para essas decisões.
Fonte: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
fonte
restrict
palavra-chave. Existem muitos recursos excelentes do C99 que estão faltando no C ++ e são recursos que eu uso todos os dias como programador de C.restrict
palavra - chave, você ainda pode usar em C ++, aparentemente: stackoverflow.com/questions/776283/… . . .A partir do VC2013 preview 1 , C99, um conjunto mais diversificado de C ++ 11 e alguns padrões C ++ 14 recém-introduzidos são suportados. Confira o blog oficial para obter mais detalhes: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in-vs2013-preview. aspx
Atualizar:
De https://news.ycombinator.com/item?id=9434483 (Stephan T Lavavej aka: STL é o mantenedor da equipe STL @VC):
Confira esta postagem para obter detalhes: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx .
fonte
Estive envolvido no trabalho do ISO C ++ (2000-2005), e a Microsoft fez contribuições significativas para essa linguagem. Não há dúvida de que funcionarão em C ++ 0x, mas precisarão de um pouco mais de tempo do que, digamos, a Intel. A Micosoft precisa lidar com uma base de código maior que costuma usar suas extensões proprietárias. Isso simplesmente cria uma fase de teste mais longa. No entanto, eles irão suportar a maior parte do C ++ 0x eventualmente (a exportação ainda não é amada, pelo menos pelo que eu entendo).
Quando se trata de ISO C, as pessoas que trabalham na norma não são representativas para o mercado da Microsofts. Os clientes da Microsoft podem usar o C ++ 98 se estiverem apenas procurando um C. melhor. Então, por que a Microsoft gastaria dinheiro com o C99? Claro, a Microsoft escolheu as peças a dedo, mas isso é um negócio lógico. Eles precisariam disso para C ++ 0x de qualquer maneira, então por que esperar?
fonte
O suporte MSVC para C infelizmente é muito insuficiente. Ele suporta apenas a parte do C99 que é um subconjunto do C ++ ... o que significa que, por exemplo, é fisicamente impossível compilar o ffmpeg ou suas bibliotecas libav * no MSVC, porque eles usam muitos recursos do C99, como elementos de estrutura nomeados. Isso é piorado pelo fato de que a libavcodec também requer um compilador que mantém o alinhamento da pilha, o que o MSVC não faz.
Eu trabalho no x264, que ao contrário do ffmpeg faz um esforço para oferecer suporte ao MSVC, embora fazer isso muitas vezes seja um pesadelo por si só. Ele não mantém o alinhamento da pilha, mesmo se você passar explicitamente a chamada de função mais alta por meio de uma função de alinhamento de pilha baseada em assembly explícita, portanto, todas as funções que exigem uma pilha alinhada devem ser desabilitadas. Também é muito chato eu não poder usar vararrays; talvez seja melhor assim, visto que, aparentemente, o GCC os pessimiza massivamente em termos de desempenho.
fonte
Uma postagem mais recente sobre a compatibilidade de recursos do C ++ 11 da MSVC para o MSVC 2010 e 2011 já está online .
fonte
A Microsoft nunca expressou qualquer interesse real em se manter atualizada com o padrão c99 (que está ficando velho agora). É triste para os programadores C, mas suspeito que a Microsoft se preocupa mais com a comunidade C ++.
fonte
O Visual C ++ 2008 SP1 contém pelo menos partes do TR1 e, de tempos em tempos, a equipe do Visual C ++ está fazendo um blog ou falando sobre C ++ 0x, então acho que eles darão suporte em algum momento no recurso. Eu não li nada oficial, no entanto.
fonte
Informações atualizadas sobre este:
Existe agora (10 de novembro de 2008) um "Community Tech Preview" (CTP) do VS2010 que contém uma prévia do VC10 que tem algumas partes do C ++ 0x implementadas (observe que o VC10 não terá o conjunto completo do C ++ 0x mudanças implementadas mesmo quando o VC10 é lançado):
http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en
Alguns detalhes sobre o que há de novo no CTP VC10:
Conforme observado no artigo acima, "O compilador Visual C ++ no Community Technology Preview (CTP) de setembro do Microsoft Visual Studio 2010 contém suporte para quatro recursos da linguagem C ++ 0x, a saber:"
fonte
Herb Sutter é o presidente do órgão de padrões ISO C ++ e também trabalha para a Microsoft. Eu não sei sobre o padrão Visual Studio C - principalmente porque eu nunca uso o C simples - mas a Microsoft está tentando levar o novo padrão C ++ adiante. A prova disso é - como o OregonGhost mencionou - o TR1 que está incluído no último Visual Studio Service Release.
fonte
A equipe do Visual C ++ lançou uma tabela de recursos C ++ 0x que a versão 2010 oferece suporte em http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language -features-in-vc10-the-table.aspx . Como pode haver um lapso de tempo entre a especificação e a implementação, isso parece bastante razoável. A Wikipedia tem um bom artigo sobre a especificação. Não foi concluído no momento em que estou escrevendo isso.
fonte
O Visual C ++ Bloq fornece muitas informações sobre vários pontos interessantes em relação ao suporte do C ++ 11 no VC ++ 11, incluindo várias tabelas
Blog da equipe do Visual C ++, recursos do C ++ 11 no Visual C ++ 11
fonte