Visual Studioの支援のための新しいC/C++の基準を満足するか。
-
02-07-2019 - |
質問
いについての本を読むC99およびC++11、これらすべての完全甘いものが追加される言語の標準という素敵な利用に来ました。しかし、現在の低迷は、土地のC++、Visual Studio.
まずは、新しいものを標準々の取得に加えてvisual studioはMicrosoft興味のある新しいC#の異なる。
編集:また、受け入れる答えは、このサンプルシミュレーションチームブログ:
具体的には、この後で:
http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx
非常に便利です。よろしく!
解決
MSにはこれに対する一連の公開返信があり、そのほとんどはユーザーを非難しています。このように:
http:// blogs。 msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx
今、Visual C ++コンパイラチームは、C99を実装していない理由について時折質問を受けます。それはユーザーからの関心に本当に基づいています。特定のC99機能について多くのリクエストを受け取った場合、それら(または類似物)の実装を試みました。いくつかの例は、可変長マクロ、
long long
、__ pragma
、__ FUNCTION __
、および__ restrict
です。仕事に役立つと思われる他のC99機能がある場合は、お知らせください! Cユーザーからあまり話を聞いていないので、声を上げて自分の声を聞かせてください
http://connect.microsoft.com/VisualStudio/feedback/ ViewFeedback.aspx?FeedbackID = 345360
こんにちは:残念ながら、大多数のユーザーから得られる圧倒的なfe折は、C-99ではなくC ++-0xに焦点を当てることを好むということです。 「チェリーピック」があります。特定の人気のあるC-99機能(さまざまなマクロ、
long long
)ですが、これを超えてC-99スペースで(少なくとも短期的に)もっと多くのことを行うことはほとんどありません。ジョナサン洞窟
Visual C ++コンパイラチーム。
これは非常に悲しい状況ですが、MSがユーザーをロックしたいのではないかと思われる場合にも意味があります。最新のgccベースのコードをMSVCに移植することは非常に困難です。
回避策はありますが、これについてはIntelの方がずっと賢明であることに注意してください。インテルCコンパイラーはC99コードを処理でき、gccと同じフラグを持っているため、プラットフォーム間でコードを移植するのがはるかに簡単です。また、IntelコンパイラはVisual Studioで動作します。したがって、MS COMPILERを廃棄することで、何らかの価値があると思われるMS IDEを引き続き使用でき、C99を心ゆくまで使用できます。
より賢明なアプローチは、正直にIntel CCまたはgccに移行し、プログラミング環境にEclipseを使用することです。私の経験では、Windows-Linux-Solaris-AIX-etcでのコードの移植性は通常重要であり、残念ながらMSツールではまったくサポートされていません。
他のヒント
ハーブサタは両方の椅子は、非常に活発なメンバーのC++の標準化専門委員会などのソフトウェアの建築家にVisual StudioのためのMicrosoft.
その中で著者のC++のメモリモデルを標準C++0x.例えば、以下の論文:
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
て彼の名前です。いくのではないでしょうか含WindowsのC++0xを確保などに関するサタがMicrosoft.
てC99の一部に含まれVisual Studioないといけないと思い、この問題の優先順位
- 最も興味深いC99の特徴に存在していC++(inlining、変数の宣言はどこでも、//コメント等) ところで使用できるC Visual Studioの場合のみ行うCコード内のC++コンパイラのイン).自分の回答 こちらの よりまとまった約C99の特徴可能です。
- C99の乖離で、CとC++による追加の特徴は、既存のC++とができる方申し訳ございません、あなたの
boolean複雑な実施にC99はユーモラスで愛着は、チュードベーカー(プラモデル見 http://david.tribble.com/text/cdiffs.htm のための詳細情報) - C地域Windowsう存在しない重要な十分に認識されなければならな
- C++のコンドミニWindowsう重要なものであるが無視される
- .NETは、Microsoftしたい人のプログラムWindows上でしか利用できません。このスレッドセーフで、C#、VB.NETうC++/CLIを起動します。
そうしたマイクロソフトなくなりました機能の実装に少数の人々が利用する場合の同じ機能が既に提供、さらに地域で活躍言語に使われているものでしょうか。
レット-イヤリング-ピアス-
C++0xが含まれ、延長VS2008年、次世代を担う若手世代?) のないようにした。
は、C99モノ-コト-ミル-ヒトで実施しているのない限り、何か飛躍的に起こる(国C99の開発者が突然?)
編集2011-04-14
そうで、"国C99の開発"に存在する: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^_^
ただ、最後のコメント: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 は十分によるものだと考えられます。
編集2012-05-03
ハーブサタを明らかにする:
- ることを目的とする支援"のC99/C11であるサブセットのISO C++98/C++11."
- また歴史的な理由により船C90コンパイラを受け入れるのみ)C90なC++
- 予定していませんの支援ISO Cの特徴を見つける事ができますかC90またはISO C++.
のブログにリンクを追加するとさらに説明しの方に決定
ソース: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
VC2013プレビュー1 、C99、より多様なC ++ 11およびいくつかの新たに導入されたC ++ 14標準がサポートされています。詳細については、公式ブログをご覧ください: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in -vs2013-preview.aspx
更新:
https://news.ycombinator.com/item?id=9434483 から(Stephan T Lavavej aka:STLはSTL @VCチームのメンテナーです):
具体的には、2015年には、tgmath.h(C ++では無関係)およびCX_LIMITED_RANGE / FP_CONTRACTプラグママクロを除き、C99標準ライブラリの実装が完了しました。
詳細については、この投稿をご覧ください: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015 -rc.aspx 。
ISO C ++の作業(2000年から2005年)に携わったことがあり、Microsoftはその言語に多大な貢献をしました。 C ++ 0xで動作することは間違いありませんが、Intelよりも少し時間が必要です。 Micosoftは、独自の拡張機能を使用することが多い、より大きなコードベースを処理する必要があります。これは単純に長いテストフェイズになります。それでも、最終的にはほとんどのC ++ 0xをサポートします(ただし、エクスポートはまだ好きではありませんが、そう理解しています)。
ISO Cに関しては、標準に取り組んでいる人々はマイクロソフトの市場の代表ではありません。 Microsoftのお客様は、より良いCを探しているだけならC ++ 98を使用できます。確かに、Microsoftが厳選した部品ですが、それは健全なビジネスです。とにかくC ++ 0xに必要なので、なぜ待つのですか?
CのMSVCサポートは、残念ながら非常に欠けています。 C99のC ++のサブセットである部分のみをサポートします。つまり、たとえば、名前付き構造体要素などの多くのC99機能を使用するため、ffmpegまたはそのlibav *ライブラリをMSVCでコンパイルすることは物理的に不可能です。これは、libavcodecにはスタックアラインメントを維持するコンパイラが必要ですが、MSVCには必要ないため、さらに悪化します。
x264で作業していますが、ffmpegとは異なり、MSVCをサポートするために努力していますが、そうすること自体が悪夢であることがよくあります。明示的なアセンブリベースのスタックアライメント関数を介して明示的に最高の関数呼び出しを渡しても、スタックアライメントは維持されないため、アライメントされたスタックを必要とするすべての関数を無効にする必要があります。また、vararrayも使用できないことも非常に面倒です。おそらくGCCがパフォーマンス面で非常に悲観的になるので、おそらくこれが最適です。
MSVC 2010および2011でのMSVCのC ++ 11機能の互換性に関する最新の投稿は現在オンライン。
Microsoftは、c99-standard(現在古くなっています)を最新の状態に保つことに真の関心を示したことはありません。 Cプログラマーにとっては悲しいことですが、MicrosoftはC ++コミュニティをもっと気にかけているのではないかと思います。
Visual C ++ 2008 SP1には少なくともTR1の一部が含まれており、Visual C ++チームは時々C ++ 0xについてブログを書いたり、話したりしています。公式なことは何も読みませんでした。
これに関する更新情報:
現在(2008年11月10日)、「Community Tech Preview」があります。 (CTP)VS2010のプレビューには、C ++ 0xの一部が実装されているVC10のプレビューが含まれています(VC10がリリースされても、VC10にはC ++ 0xの変更の完全なセットが実装されていないことに注意してください) ):
VC10 CTPの新機能に関する詳細:
上記の記事で述べたように、" Microsoft Visual Studio 2010 September Community Technology Preview(CTP)のVisual C ++コンパイラには、次の4つのC ++ 0x言語機能のサポートが含まれます:"
- ラムダ、
- auto、
- static_assert、
- 右辺値参照
Herb SutterはISO C ++標準化団体の議長であり、Microsoftでも働いています。私はVisual Studio C標準については知りません-主にプレーンなCを使用したことがないためです-しかし、マイクロソフトは新しいC ++標準を推進しようとしています。これの証拠は-前述のOregonGhostのように-最新のVisual Studioサービスリリースに含まれているTR1です。
Visual C ++チームは、2010リリースがサポートするC ++ 0x機能の表を http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c -0x-core-language-features-in-vc10-the-table.aspx 。仕様と実装の間に遅延時間がある可能性があるので、それはかなり合理的だと思われます。ウィキペディアには、仕様に関する素晴らしい記事があります。これを書いている時点ではまだ終わっていません。
Visual C ++ Bloqは、VC ++ 11でのC ++ 11のサポートに関するいくつかの興味深い点に関するいくつかのテーブルを含む多くの情報を提供します
- C ++ 11コア言語機能
- C ++ 11コア言語機能:並行性
- C ++ 11コア言語機能:C99
- x86コンテナサイズ(バイト)
- x64コンテナサイズ(バイト)