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


8

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

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

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

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


4
Cの_Bool型は、C ++の影響を受けてboolいると思います。
Jesper Juhl

2
関数の最上部以外の場所で変数を宣言できることも、最初にC ++でしたが、後にCI thinkによって採用されました。
Jesper Juhl

2
関数プロトタイプはC ++、IIRCから来たと思います。
Ian Abbott

2
関数の戻り値の型として(暗黙のint)を許可しないことmain()は(を除く)、C ++が開拓し、その後Cが採用したものでもあると思います。
Jesper Juhl、

5
これは明確な答えが1つある質問のようではなく、ここでは明らかな問題はありません。
Caleb

回答:


4

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

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

C11:

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

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


1
@KonradRudolph匿名:union named { struct { int i;}; };名前:union named { struct { int i;} unnamed; };。名前のない構造体には名前がありませんが、名前付き変数があります。無名の構造体には名前がなく、名前付き変数はありません。
eerorika


1
インライン関数は、C ++より前のGCCおよびその他のコンパイラに存在していました。
Lee Daniel Crocker

2

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

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

例:

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

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

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

この例では、「属性ATTR1は、変数iの種類に適用されるATTR2とattr3は、変数自体には適用され、attr4はif文とベンダーに適用されます:: attr5は、return文に適用されます。ソース


興味深いですが、「追加される」という保証はありません。
chux-モニカを復活させる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.