Frage

Ich halte das Lese über C99 und C ++ 11 und all diese total süßen Sachen, die die Sprache Standard hinzugefügt werden immer die schön sein könnte einen Tag zu verwenden. Allerdings haben wir zur Zeit im Land schmachten C ++ in Visual Studio zu schreiben.

Wird eine der neuen Sachen im Standard jemals zu Visual Studio hinzugefügt bekommen, oder ist Microsoft mehr daran interessiert, das Hinzufügen neue C # Varianten, das zu tun?

Edit: Neben der akzeptierten Antwort, fand ich das Visual C ++ Team Blog:

http://blogs.msdn.com/vcblog/

Und speziell, dieser Beitrag in ihm:

http: //blogs.msdn. com / vcblog / Archiv / 2008/02/22 / TR1-slide-decks.aspx

Sehr nützlich. Dank!

War es hilfreich?

Lösung

MS hat eine Reihe von öffentlichen Antworten auf diese, die meisten von ihnen ihre Nutzer die Schuld. Wie diese:

http: // blogs. msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx

  

Nun wird das Visual C ++ Compiler-Team erhält die gelegentlich als fragen, warum wir C99 nicht umgesetzt haben. Es ist wirklich auf Interesse unserer User basiert. Wo wir viele Anfragen für bestimmte C99 Funktionen erhalten haben, haben wir versucht, sie (oder Analoga) zu implementieren. Ein paar Beispiele sind variadische Makros, long long, __pragma, __FUNCTION__ und __restrict. Wenn es andere C99 Funktionen, die Sie in Ihrer Arbeit nützlich finden würden, lassen Sie es uns wissen! Wir hören nicht viel von unserer C-Benutzer, so sprechen und machen euch gehört

http://connect.microsoft.com/VisualStudio/feedback/ ViewFeedback.aspx? FeedbackID = 345360

  

Hallo: leider die überwältigende Feadback wir von der Mehrheit unserer Nutzer bekommen ist, dass sie es vorziehen, dass wir auf C ++ konzentrieren - 0x statt auf C-99. Wir haben „handverlesene“ bestimmte beliebte C-99-Features (variadische Makros, long long), aber darüber hinaus sind wir wahrscheinlich nicht viel mehr in dem C-99 Raum zu tun (zumindest in den kurzfristigen).

     

Jonathan Höhlen

     

Visual C ++ Compiler-Team.

Dies ist eine ziemlich traurige Angelegenheit, sondern auch sinnvoll, wenn Sie MS-Benutzer vermuten will sperren: es ist es sehr schwer zu portieren modernen gcc-basierten Code in MSVC macht, die zumindest ich äußerst schmerzhaft.

Eine Abhilfe besteht, aber: Beachten Sie, dass Intel viel aufgeklärter auf diesem ist. der Intel C Compiler kann C99 Code verarbeiten und hat sogar die gleichen Flags wie gcc, es viel einfacher zu portieren Code zwischen den Plattformen zu machen. Außerdem arbeiten die Intel-Compiler in Visual Studio. So von MS COMPILER Verschrottung können Sie immer noch die MS IDE verwenden, dass Sie scheinen zu denken, eine Art von Wert, und verwenden C99 nach Herzenslust.

Ein sinnvoller Ansatz ist, ehrlich zu über Intel CC oder gcc zu bewegen, und verwenden Sie Eclipse Ihre Programmierumgebung. Portabilität von Code für Windows Linux-Solaris-AIX-etc ist in der Regel wichtig, in meiner Erfahrung, und das ist gar nicht von MS-Tool unterstützt, leider.

Andere Tipps

Herb Sutter ist sowohl den Stuhl und ein sehr aktives Mitglied der C ++ Standardisierung comitee, sowie Software-Architekt auf Visual Studio für Microsoft.

Er ist unter den Autor des neuen C ++ Speichermodell für C ++ 0x standardisiert. Zum Beispiel können die folgenden Papiere:

http://www.open -std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http: //www.open-std. org / JTC1 / SC22 / WG21 / docs / paper / 2007 / n2197.pdf

hat seinen Namen. Also ich denke, die Aufnahme auf Windows von C ++ 0x so lange gewährleistet ist, wie H. Sutter bei Microsoft bleibt.

Wie für C99 nur zum Teil in Visual Studio enthalten ist, ich denke, das ist eine Frage der Prioritäten ist.

  • Die meisten interessanten C99 Features sind bereits in C ++ (inlining, variable Deklaration überall, // Kommentare, etc.) und wahrscheinlich schon verwendbar in C in Visual Studio (Wenn nur C-Code in der C ++ Compiler tun). Siehe meine Antwort hier für eine komplettere Diskussion über C99-Funktionen in C ++.
  • C99 erhöht die Divergenz zwischen C und C ++ von Funktionen, die bereits bestehenden in C ++ hinzugefügt, aber in einer inkompatiblen Weise (sorry, aber die boolean komplexe Implementierung in C99 lächerlich ist, bestenfalls ... Siehe http://david.tribble.com/text/cdiffs.htm für weitere Informationen )
  • Die C-Gemeinschaft unter Windows scheint nicht vorhanden oder nicht wichtig genug, um anerkannt zu werden
  • Die C ++ Gemeinschaft unter Windows scheint zu wichtig, um ignoriert zu werden
  • .NET ist die Art und Weise Microsoft will die Menschen auf Windows programmieren. Das bedeutet, C #, VB.NET, vielleicht C ++ / CLI.

Also, ich würde Microsoft sein, warum sollte ich Features wenige Menschen realisieren jemals verwenden werden, wenn die gleichen Funktionen, die bereits in mehr Community aktiv Sprachen angeboten werden, bereits von den meisten Menschen?

Fazit?

C ++ 0x wird eingeschlossen, als Erweiterung von VS 2008 oder auf der nächsten Generation werden (Generationen?) Von Visual Studio.

Der C99 verfügt nicht bereits umgesetzt wird in den nächsten Jahren nicht mehr, es sei denn etwas Dramatisches passiert (ein Land voller C99 Entwickler erscheint aus dem Nichts?)

Bearbeiten 2011-04-14

Offenbar gibt es das "Land voller C99 Entwickler" schon: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^ _ ^

Doch die letzte Bemerkung an: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 ist klar genug, schätze ich.

Bearbeiten 2012-05-03

Herb Sutter machte deutlich, dass:

  
      
  1. Unser primäres Ziel ist "die meisten von C99 / C11, die eine Teilmenge von ISO C ++ 98 / C ++ 11." Zu unterstützen
  2.   
  3. Wir haben auch aus historischen Gründen einen C90-Compiler versenden, die (nur) C90 akzeptiert und nicht C ++
  4.   
  5. Wir planen nicht, ISO C-Funktionen zu unterstützen, die nicht von Teil ist entweder C90 oder ISO C ++.
  6.   

Der Blog-Eintrag hinzufügen, Links und weitere Erklärungen für diese Entscheidungen.

Quelle: http: // herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/

Starten von VC2013 Vorschau 1 , C99, ein diversifizierter Satz von 11 C ++ und einige neu ++ 14-Standards eingeführt C unterstützt. Kasse des offiziellen Blog für weitere Informationen: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in -vs2013-preview.aspx

Update:

https://news.ycombinator.com/item?id=9434483 (Stephan T Lavavej aka: STL ist Maintainer von STL @VC Team):

  

Insbesondere im Jahr 2015 unsere C99 Standard Library Implementierung abgeschlossen ist, mit Ausnahme von tgmath.h (irrelevant in C ++) und dem CX_LIMITED_RANGE / FP_CONTRACT Pragma Makros.

Überprüfen Sie diesen Beitrag out für Details: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015 -rc.aspx .

Ich habe in der ISO C ++ Arbeit (2000-2005) und Microsoft leisteten einen erheblichen Beitrag zu dieser Sprache beteiligt. Es gibt keinen Zweifel, dass sie auf C ++ 0x arbeiten, aber sie werden etwas mehr Zeit brauchen, als Intel sagen. Micosoft hat mit einem größeren Codebasis beschäftigen, die oft ihre proprietären Erweiterungen verwendet. Das macht einfach für eine längere testfase. Dennoch werden sie die meisten C ++ 0x unterstützen schließlich (Export noch nicht obwohl geliebt oder so verstehe ich).

Wenn es um die ISO C geht, sind die Menschen auf der Standard-Arbeits nicht repräsentativ für Microsofts Markt. Microsofts Kunden können C ++ 98 verwenden, wenn sie nur für eine bessere C. suchen Also warum sollte Microsoft Geld für C99 verbringen? Sicher, Microsoft Kirsche gepflückt Teile, aber das ist gesund Geschäft. Sie würden 0x sowieso die für C ++ benötigen, also warum warten?

MSVC Unterstützung für C ist leider sehr fehlen. Es unterstützt nur den Teil der C99, die eine Teilmenge von C ++ ... was bedeutet, dass zum Beispiel es physikalisch unmöglich ist ffmpeg oder seine libav * Bibliotheken in MSVC zu kompilieren, weil sie viele C99-Features wie der Namen struct Elemente verwenden. Dies wird noch verschlimmert durch die Tatsache, dass libavcodec erfordert auch einen Compiler, die Ausrichtung stapeln hält, die MSVC nicht.

ich auf x264 arbeiten, was im Gegensatz zu ffmpeg hat anstrengen MSVC zu unterstützen, obwohl so oft einen Alptraum gewesen zu tun an und für sich. Dabei spielt es keinen Stapel Ausrichtung beibehalten, auch wenn Sie explizit den höchsten Funktionsaufruf durch eine explizite Montag-basierten Stapel Ausrichtung Funktion übergeben, so dass alle Funktionen, die einen ausgerichteten Stapel erfordern haben deaktiviert sein. Es ist auch sehr ärgerlich, dass ich nicht entweder vararrays verwenden kann; vielleicht ist dies für die besten, da offenbar massiv GCC pessimizes sie leistungsmäßig.

Ein kürzlich erschienener Beitrag über MSVC der C ++ 11 Funktionskompatibilität für MSVC 2010 und 2011 ist jetzt online .

Microsoft zum Ausdruck gebracht hat nie ein wirkliches Interesse daran, dass up-to-Geschwindigkeit mit dem C99-Standard (die mittlerweile wird alt). Sad für C-Programmierer, aber ich vermute, dass Microsoft mehr für die C ++ kümmert sich -. Community

Visual C ++ 2008 SP1 Teile TR1 enthält zumindest, und von Zeit zu Zeit, das Visual C ++ Team bloggen oder sprechen über C ++ 0x, so dass ich glaube, dass sie es irgendwann einmal in der Funktion unterstützen werden. Ich habe nichts offizielle obwohl lesen.

Aktuelle Informationen zu diesem Thema:

Es gibt jetzt (10. November 2008) eine "Community-Tech Preview" (CTP) von VS2010, die eine Vorschau von VC10 enthält, hat einige Teile von C ++ 0x umgesetzt (das VC10 beachten wird haben den vollen Satz von ++ 0x Änderungen C implementiert auch nicht, wenn VC10 freigegeben wird):

http: // www .microsoft.com / downloads / details.aspx? FamilyID = 922B4655-93D0-4476-BDA4-94CF5F8D4814 & displaylang = en

Einige Details auf, was in dem VC10 CTP ist neu:

Wie in dem obigen Artikel erwähnt, "Die Visual C ++ Compiler in dem Microsoft Visual Studio 2010 September Community Technology Preview (CTP) enthält Unterstützung für vier C ++ 0x Sprachfunktionen, nämlich:"

  • lambdas,
  • auto,
  • static_assert,
  • rvalue Referenzen

Herb Sutter ist der Vorsitzende der ISO C ++ Normungsorganisation und arbeitet auch für Microsoft. Ich weiß nicht, über die Visual Studio C Standard - vor allem, weil ich nie Ebene C verwenden - aber Microsoft ist sicher versuchen, die neue C ++ Standard nach vorne zu schieben. Ein Beweis dafür ist - wie OregonGhost erwähnt -. Die TR1, die in der neuesten Visual Studio Service Release enthalten ist

Das Visual C ++ Team hat eine Tabelle von C ++ 0x-Features löschte, dass die 2010-Version unterstützt unter http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c -0x-Core-Sprache-Funktionen-in-VC10-the-table.aspx . Da gibt es eine Zeitverzögerung zwischen der Spezifikation sein kann und die Umsetzung, scheint ziemlich vernünftig. Wikipedia hat einen schönen Artikel über die spec. Es ist nicht zu dem Zeitpunkt beendet ich dies schreibe.

Die Visual C ++ Bloq bietet eine Vielzahl von Informationen über mehrere interesing Punkte in Bezug auf die Unterstützung von C ++ 11 in VC ++ 11, darunter mehrere Tabellen

  • C ++ 11-Core Sprachfunktionen
  • C ++ 11-Core Sprache Features: Concurrency
  • C ++ 11-Core Sprache Features: C99
  • x86 Gebindegrößen (Bytes)
  • x64 Gebindegrößen (Bytes)

Visual C ++ Team Blog, C ++ 11 Eigenschaften in Visual C ++ 11

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top