История изменений
Исправление wandrien, (текущая версия) :
Как написать функцию одновременно принимающую
struct cat
иstruct dog
, но не принимающуюstruct plane
?
Что-то типа такого:
struct cat {
};
struct dog {
};
enum animal_type {
type_cat,
type_dog
};
typedef struct {
enum animal_type type;
union {
struct cat * cat;
struct dog * dog;
};
} animal_pointer;
void f(animal_pointer p) {
switch (p.type) {
case type_cat:
/* do something with p.cat */
break;
case type_dog:
/* do something with p.dog */
break;
default:
die("Invalid type tag in foo()!");
}
}
Исходная версия wandrien, :
Как написать функцию одновременно принимающую
struct cat
иstruct dog
, но не принимающуюstruct plane
?
Что-то типа такого:
struct cat {
};
struct dog {
};
enum animal_type {
type_cat,
type_dog
};
typedef struct {
enum animal_type type;
union {
struct cat * cat;
struct dog * dog;
};
} animal_pointer;
void f(animal_pointer p) {
switch (p.type) {
case type_cat:
/* do something with cat */
break;
case type_dog:
/* do something with dog */
break;
default:
die("Invalid type tag in foo()!");
}
}