web-dev-qa-db-ja.com

C ++機能の影響を受けている、またはC ++機能から派生しているC機能はどれですか。

もともとCの一部ではなかったが、C++で/のために発明され、その利点のために後でCに採用された実際のC標準の機能は何ですか?

1つの顕著な例は、単一行コメント//です。これは、もともとC++から来たもので、後にCによって採用されました。

C++の開発から明示的または暗黙的にもたらされた実際のC標準の機能をもっと知っていますか?

情報:もちろん、C++はCから派生していることは知っていますが、派生したC++の開発から採用された機能について考えていただけです。

C++の影響を直接受けていることは確認できません1、しかしここにC99で追加された標準C++の機能のリストがあります:

  • 1行コメント(言及)
  • インライン関数
  • ブロックの開始後に許可される変数
  • ブールデータ型
  • 複雑な数学ライブラリ

C11:

  • 匿名の共用体(C11では匿名の構造体も許可されています)。匿名の共用体はすでに標準のC++に含まれていました。 (匿名の構造体は、標準C++ではまだ許可されていません)。

1 たとえば、Bの前身であるBCPLは、Cの前身であるBの前身であり、すでに単一行コメントに対して同じ構文を持っています。これらの一部は、標準C++に組み込まれる前に、一部のC実装で言語拡張としてサポートされている場合があります。これらの場合、標準Cと標準C++の両方が、互いに影響を与えるのではなく、同じソースから影響を受けている可能性があります。

4
eerorika

属性 はC++ 11で追加され、次のC標準リビジョン C2x で追加されます。この機能の proposal (および here )は特にC++を参照しています。

属性は、たとえば、コンパイラがより良い診断を発行したり、生成されたコードを最適化したりするのに役立つ情報を提供するのに役立ちます。 ソース

例:

int [[attr1]] i [[attr2, attr3]];

[[attr4(arg1, arg2)]] if (cond)

{
    [[vendor::attr5]] return i;
}

この例では、「属性attr1は変数iのタイプに適用され、attr2およびattr3は変数自体に適用され、attr4はifステートメントに適用され、vendor :: attr5はreturnステートメントに適用されます。 " ソース

2
Adam