LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

либо так

struct p_str {
  union {
    struct ca_str *ca;
    struct cb_str *cb;
  };
};

struct p_str p; /* объявляем переменную */

либо так

union p_str {
  struct ca_str *ca;
  struct cb_str *cb;
};

union p_str p; /* объявляем переменную */

Во втором случае придётся тип называть не struct а union при объявлении переменных. Ну а ещё лучше так:

typedef union {
  struct ca_str *ca;
  struct cb_str *cb;
} p_str;

p_str p; /* объявляем переменную */

незачем таскать эти struct/union рядом с типом везде, замусоривая вид кода, и typedef позволяет назвать тип одним словом

Исходная версия firkax, :

либо так

  union {
    struct ca_str *ca;
    struct cb_str *cb;
  };
};

struct p_str p; /* объявляем переменную */

либо так

  struct ca_str *ca;
  struct cb_str *cb;
};

union p_str p; /* объявляем переменную */

Во втором случае придётся тип называть не struct а union при объявлении переменных. Ну а ещё лучше так:

  struct ca_str *ca;
  struct cb_str *cb;
} p_str;

p_str p; /* объявляем переменную */

незачем таскать эти struct/union рядом с типом везде, замусоривая вид кода, и typedef позволяет назвать тип одним словом