共用方式為


typedef 規範

typedef 宣告介紹一個名稱,在其範圍內,則為 型別宣告 區段中指定型別的同義詞。

typedef type-declaration synonym;

備註

您可以使用 typedef 宣告建構較短或更有意義的名稱,給這種語言中已定義的型別或針對所宣告的型別。 Typedef 名稱可讓您封裝可能變更的實作詳細資料。

種類相反, struct、 enum宣告、 關聯和typedef 宣告不會引入新的型別,它們在現有型別中引入新名稱。

Typedef 命名共用與泛型識別項的 命名空間 。 因此,程式可以由相同的 typedef 名稱和區域範圍識別項名稱。

如需詳細資訊,請參閱:

範例

// typedef_specifier1.cpp
typedef char FlagType;

int main()
{
}

void myproc( int )
{
    int FlagType;
}

當宣告和 typedef 相同的區域範圍識別項,或宣告在同一個範圍內或在內部範圍的結構或等位的成員,必須指定型別規範。 例如:

typedef char FlagType;
const FlagType x;

若要重複使用 FlagType 名稱識別項,必須提供結構成員或等位的成員的型別:

const int FlagType;  // Type specifier required

這是不夠的

const FlagType;      // Incomplete specification

因為 FlagType 會被當做型別的一部分,而不是重新宣告的識別項。 這個宣告會被當做不合法的宣告。

int;  // Illegal declaration 

您可以宣告 typedef 的任何型別,包括指標、函式和陣列型別。 在定義結構或等位型別之前,您可以宣告 typedef 名稱指標到結構或等位型別,只要這個定義具有與宣告相同的可視性。

範例

typedef 宣告的一個用法是使宣告更為統一和緊湊。 例如:

typedef char CHAR;          // Character type.
typedef CHAR * PSTR;        // Pointer to a string (char *).
PSTR strchr( PSTR source, CHAR target );
typedef unsigned long ulong;
ulong ul;     // Equivalent to "unsigned long ul;"

在相同的宣告中,若要使用 typedef 指定基本和衍生型別,您可以用分隔逗號的宣告子。 例如:

typedef char CHAR, *PSTR;

下列範例會傳回值和接受兩個整數引數的函式不提供型別: DRAWF

typedef void DRAWF( int, int );

在上面 typedef 陳述式之後,宣告

DRAWF box; 

與宣告相等

void box( int, int );

typedef 通常結合 struct 以宣告和命名使用者定義型別:

// typedef_specifier2.cpp
#include <stdio.h>

typedef struct mystructtag
{
    int   i;
    double f;
} mystruct;

int main()
{
    mystruct ms;
    ms.i = 10;
    ms.f = 0.99;
    printf_s("%d   %f\n", ms.i, ms.f);
}
  

請參閱

參考

C++ 關鍵字

其他資源

C++ Type Names