1

比較表へのリンク、またはメイン コンパイラで利用可能な拡張機能のリストを配置できます。これらのいずれも利用できない場合は、お気に入りのコンパイラで使用または気に入っている拡張機能のリストを作成できます。

4

5 に答える 5

4

C++/ISO-C スタイルのコメント: //

于 2009-12-02T00:19:07.703 に答える
2

これは、「ANSIC」と言うときにC89とC99のどちらを意味するかによって異なります。ほとんどの主流の実装はまだ完全にC99に準拠していないので、C89を想定します。

その場合、私は言います(そして、POSIXやBSDソケットのような特定のAPIは含まれていません):

  • long long最も一般的な拡張機能である必要があります。
  • union最後に書かれたもの以外のメンバーへのアクセスを許可します。
  • inlineおそらくそこにあります。
  • snprintf多くの場所で利用可能です。
  • 関数ポインタとvoidポインタの間のキャストを許可することは広く行われています。
  • alloca

編集:ああ、はい、どうすればユビキタス//スタイルのコメントを忘れることができますか?

于 2009-12-02T00:07:58.320 に答える
1

組み込みC用の悪名高いコンパイラの1つでは、プロセッサの設定とは関係なく、構造体タイプにリトルエンディアンまたはビッグエンディアンを指定できます。int*エンディアンを忘れたフィールド(たとえば)を介してフィールドの1つにアクセスしないことを覚えている場合は、デバイスドライバーを作成するのに非常に便利です。

機能マトリックスのことを真剣に考えていますか?SOメンバーにはこれ以上のことはないと思いますか?

于 2009-12-02T00:09:14.247 に答える
1

多くのコンパイラは、匿名ユニオン内で匿名構造体を許可します。これは、次のような場合に役立ちます。

struct vector3
{
    union
    {
        struct
        {
            float x, y, z;
        };
        float v[3];
    };
};

// members can now be accessed by name or by index:
vector3 v;
v.x = 1.0f; v.y = 2.0f; v.z = 3.0f;
v.v[0] = v.v[1] = v.v[2] = 0.0f;
于 2009-12-02T00:13:01.030 に答える