主にマイクロソフトのせいで、まだ完全にC99に準拠していない擬似C89コードを書いていることを認めなければなりません。私はWindows側のMSVCに大きく依存していますが、まだC99に完全には準拠しておらず、代わりにC ++ 17以降に焦点を当てています。
それに加えて、多くのプラグイン開発者がプラグイン開発にMSVCを使用するC SDKに取り組んでおり、一部はまだMSVC 2010です。そのため、あまりエキゾチックではないプラットフォームで広く使用されている人気のあるコンパイラがありますWindowsエキゾチック)C99をまだ完全には実装していません。最大範囲のコンパイラーとの幅広い互換性(SDKがC ++ではなくCで記述されている主な理由の1つ)をターゲットにした場合、時代遅れの多くの(少なくともMSVC)がまだ広く使用されていますCサポートに関しては。C99からほぼ20年が経過し、MSVC AFAIKなどにはまだVLAがありません(MSVC 2017ではまだ確認していませんが、Cに対するマイクロソフトのスタンスを考えると、C99にはるかに準拠しているとは思えません) 。
そのため、残念ながら、C99に完全に準拠していない優れたオプティマイザーとデバッガーを備えた実際に非常に優れた新しいコンパイラーがまだあります。もちろん、これがなければ、C11を飛び回ることになります。
プラグインおよびMSVCとのソース互換性に加えて、他の言語との相互運用もあります。他のいくつかの言語はFFIを介してSDKを使用し、それらのFFIの一部はC89のみを理解します。彼らは理解していない可能性がありますbool
か_Bool
、簡単な例としてdylibから関数をインポートするときにのみ理解し、言いますint
。
はい、賛成の議論は移植性ですが、問題は、C89コンパイラのみを使用できるが、ソフトウェアの新しいディストリビューションをコンパイルしている非仮想システムがあるかどうかです。すなわち、私が新しいCプロジェクトを始めていた場合、C89に準拠することで潜在的なユーザーの数を増やすことができるかどうかをどのように判断できますか?
これに気づいたのBlrfl
ですが、私の場合、C99とC11を使用することによる生産性の向上はそれほど大きくはありませんが、MSVCでプラグインを作成する機能を失うことは大きなコストになる可能性があります(特に私が働いている製品以来onはWindows側で圧倒的に最大の市場シェアを持ち、平均的なユーザーは多くのサードパーティプラグインを購入してダウンロードします。私が取り組んでいる製品の種類は、プログラマー/スクリプター向けの開発環境とアーティスト向けのユーザーエンド製品のほぼ中間です。なぜなら、多くの人々が新しい機能を開発して新しい機能を実現し、親切な人はまだ見ていません。したがって、私の場合、少なくともSDKの場合はC89を優先することは実際には非常に単純な決定でした。
私はあなたがあなたの周りのコンパイラを見て、あなたのターゲット人口統計を把握しようとする必要があると思います。Windows用のプラグインアーキテクチャを開発していない場合、または組み込みプログラミングを行っていない場合、または最も広範囲のコンパイラや言語で使用できるソフトウェア開発キットを構築しようとしている場合、C99 +離れて。また、C99以降でどれだけ生産性が向上するかを検討することもできます。データが収まる場合はスタックを使用し、それ以外の場合はヒープを使用するための単純で十分な方法に依存しているため、VLAのようなものからそれほど利益を得ることはありません。
しかし、MSVCのような人気のあるコンパイラから他の言語のFFIに遅れをとっているものはたくさんあります。これらは、dylibから直接C関数をインポートして呼び出すことができるという意味でクールですが、回。したがって、ドメインに応じて、ある種の美学のために古いものや標準化されたものを単に好むことよりも、考慮すべきより実用的なビジネス上の事柄があります。