Поделиться через


описатель typedef

A typedef объявление вставляет имя, которое в пределах своей области, является синонимом для типа, передаваемых объявление типа часть объявления.

typedef type-declaration synonym;

Заметки

Можно использовать объявления typedef для создания более короткие или более значимые имена типов, либо уже определенных типов, объявляли.Имена Typedef позволяющие инкапсулировать сведения о реализации, которые могут измениться.

в отличие от класс" struct" unionи 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 для функции, не возвращая значение и предполагается 2 аргумента int:

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