1

gcc 4.7.2 c89

こんにちは、

私はApachePortableRuntimeを使用していて、それらのtypedefを調べています

typedef short apr_int16_t
typedef int apr_int16_t
typedef size_t apr_size_t /* This is basically the same, so what's the point */

  1. では、このすべてのポイントは何ですか?
  2. Cの組み込みの標準データ型またはtypedefのデータ型を使用することをいつ決定する必要がありますか?

APRを使用した例を示しました。しかし、私も一般的に話している。typedefのデータ型を示すstdint.hヘッダーファイルもあります。

提案をありがとう、

4

2 に答える 2

2

私の意見では、タイプのサイズを明確に区別するのに役立つため、システムのネイティブデータ型に対してカスタム定義されたデータ型を使用することをお勧めします。

例:longは、コードが実行されているマシンとコードのビルド方法に応じて、32ビットまたは64ビットになる場合があります。ただし、コードで特に64ビット変数が必要な場合は、uint_64_tなどの名前を付けると、サイズを明確に関連付けるのに常に役立ちます。

このような場合、コードは次のように記述されます。

    #if _64BIT_
    typedef long uint_64_t
    #else
    typedef long long uint_64_t
    #endif

しかし、Mehrdadが示唆しているように、「キックのためだけに」使用しないでください。:)

于 2012-11-30T05:33:28.993 に答える
1

素晴らしい質問です。

  1. では、このすべてのポイントは何ですか?

    これは抽象化を目的としていますが、他のすべての場合と同様に、誤用/乱用されることがあります。
    下位互換性のために必要な場合(typedef VOID voidWindowsなど)、適切な抽象化のために必要な場合(などtypedef unsigned int size_t)、論理的に完全に無意味な場合もありますが、入力が簡単になります(typedef char const *LPCSTRWindowsなど)。

  2. Cの組み込みの標準データ型またはtypedefのデータ型を使用することをいつ決定する必要がありますか?

    何かが簡単になる場合、または適切な抽象化バリアが実装されている場合は、それを使用してください。
    それが正確に意味することは、あなたが時間をかけて学ばなければならないことです。
    ただし、「キックのためだけに」使用しないでください。

于 2012-11-30T05:29:55.600 に答える