c++とは非互換の状態。(ほぼ)実装されている模様。2013rtmあたりかららしく)。文字を使った場合の具合の確認。L'C'等の対応とは別次元の対応なので分けて試した。マルチバイト文字を扱うのにオプションが必要ならばそれを設定した状態でコンパイルしてる。対応具合は結構まちまち。全角2バイト目に持つ文字があるため、未対応のコンパイラだと意図せず\エスケープ文字に化けて不具合になる場合があるのでそれらの確認。含む文字に注意する必要がある。utf8文字列のバイナリをつくるのが困難(直接ソース中にutf8文字列を記述しない方法で作るしか。unicode文字が使えないのは意図的なのだろうが(あるいは配布Cコンパイラのバイナリ作成時のオプションの都合?)、個人的には出来てほしい。\u???表現まで可能なのはやり過ぎに思う面もあるがリンカがutf対応していて他言語をC/C++に変換する用途等では出来たほうが楽なこともありそうか。系コンパイラの場合は追従してサポートしていることが多そう(vc拡張といえるけど一応c++の機能なので別枠扱)。cでコンパイルすると不定値を返す状態で、c++でコンパイルすると型エラーでコンパイルが通らない状態。言う場合は、でもgccとか未対応あるよ、ってのも言わないと不味いような気はする。c++でokというのは間違いのよう。[gcc拡張]凍結gcc,vcとも言語拡張はたくさんあるが、そのうちのわりとメジャー?そうなもの(で主に#defineマクロで違いを吸収できそうなもの)を適当に確認。いくつかの機能はc99,c11で標準化済みだが、まだc99,c11サポートが不十分なものもあるので、チェックしている。生成コードを確認していないのでコンパイラによっては関数呼び出しになっているものもあるかもしれない。サポートしていないので、そのへんはさっぴいている。機能自体は結構普及しているのかもしれない。onceはwin系コンパイラでは古くからあり、今では(この表にないコンパイラ含め)他でもぽつぽつサポートされている印象。以外ではほとんどサポートされていない。(atomic関係はライブラリ関数でネイティブになるとは限らないが)。このテストではvc,gcc,clang以外でのサポートはいまいちだが、x86以外のcpu向けの現役のc/c++コンパイラだとgcc(vc)互換機能はわりとありそうにも思う(が未確認)。必須機能かもしれない。(これがないとwindows-apiライブラリを用意するのが面倒だろうで)。win系はなんらかの形で対応してるだろう。前2つよりかはサポートされていないこともあるようだ。サポートしていてもレジスタの扱いはコンパイラによって違う模様。前置での使用のみテストしている。当初後置記述のみだったのが後から前置可能になったこともあり、少し古めのgcc(互換)コンパイラでの機能を確認するなら後置も試したほうがよいだろうが、面倒なのでそこまでしていない。c++14で採用?されるらしいので、試してみた。同様の機能はあるようだが、面倒なので未確認。gcc拡張と同様の印象をもったため、vc,gcc拡張も試してみたのだが、わりと量が多くなったので、標準機能とは別で試したほうがよかったかもしれない。C機能について凍結c/c++は些細とはいえ結構細かい違いが多々出来てしまっていたのだなあ、と改めて思う。違いとして並べているせいもあるが。c++非互換のc機能はエラーになっても当然だが、どのコンパイラもいくつか使えてしまう機能が残っている。いう機能は使われると移植でたちが悪くなるが、こういう一覧で見る分にはちょっと楽しいかもしれない。Cコンパイラのままだったのは興味深い。テンプレートのメンバー関数テンプレート等わりと大きめの機能はちゃっちゃと入っていたりするので、無いと代用不可能な機能を先にいれて枝葉は後回しにした、といった感じなのだろうか。8/16bitCPU向のコードとしてよくなるような選択をしていた類だったように思う。エラーになるのは、これを試すまでは意識していなかった。あるので機能自体はそれなりに普及しているかもしれない。マクロ定義されている。考えすぎなのでは思ってしまう。c++9x標準化待たずにやってほしかった類は多かったのだが)(追記:VLA関係はほぼgccのをもってきただけのよう?で少し言い過ぎたので微修正)複素数型は、c99の時点でコンパイラ間の都合のような折衷案にみえる。定義されている場合のみ存在する。サポートしないようなので、余計に使いづらい状態に思われる。ような式表現が可能になっている。ようにかけるようになったらしいが...cで複素数計算を必要としてる人はとうにgcc拡張が普及しているような気はする。オプション扱い可能になった。マクロ定義される模様。Compressed。