#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct linked_node
{
void* data;
struct linked_node* next;
};
struct data_x { int i; char c; };
struct data_y { char* s; };
void add_node(struct linked_node** a_head, void* a_data)
{
struct linked_node
* new_node
= malloc(sizeof(*new_node
)); new_node->data = a_data;
new_node->next = 0;
if (!*a_head)
{
*a_head = new_node;
}
else
{
/* ... */
}
}
int main(void)
{
struct linked_node* list_x = 0;
struct data_x
* dx
= malloc(sizeof(*dx
)); dx->i = 4;
dx->c = 'a';
add_node(&list_x, dx);
if (list_x)
{
struct data_x* x = list_x->data;
printf("x.i=%d x.c=%c\n", x
->i
, x
->c
); }
struct linked_node* list_y = 0;
struct data_y
* dy
= malloc(sizeof(*dy
)); dy->s = "hello";
add_node(&list_y, dy);
if (list_y)
{
struct data_y* y = list_y->data;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKc3RydWN0IGxpbmtlZF9ub2RlCnsKICAgIHZvaWQqIGRhdGE7CiAgICBzdHJ1Y3QgbGlua2VkX25vZGUqIG5leHQ7Cn07CgpzdHJ1Y3QgZGF0YV94IHsgaW50IGk7IGNoYXIgYzsgfTsKc3RydWN0IGRhdGFfeSB7IGNoYXIqIHM7IH07Cgp2b2lkIGFkZF9ub2RlKHN0cnVjdCBsaW5rZWRfbm9kZSoqIGFfaGVhZCwgdm9pZCogYV9kYXRhKQp7CiAgICBzdHJ1Y3QgbGlua2VkX25vZGUqIG5ld19ub2RlID0gbWFsbG9jKHNpemVvZigqbmV3X25vZGUpKTsKICAgIG5ld19ub2RlLT5kYXRhID0gYV9kYXRhOwogICAgbmV3X25vZGUtPm5leHQgPSAwOwogICAgaWYgKCEqYV9oZWFkKQogICAgewogICAgICAgICphX2hlYWQgPSBuZXdfbm9kZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICAvKiAuLi4gKi8KICAgIH0KfQoKaW50IG1haW4odm9pZCkKewogICAgc3RydWN0IGxpbmtlZF9ub2RlKiBsaXN0X3ggPSAwOwogICAgc3RydWN0IGRhdGFfeCogZHggPSBtYWxsb2Moc2l6ZW9mKCpkeCkpOwogICAgZHgtPmkgPSA0OwogICAgZHgtPmMgPSAnYSc7CgogICAgYWRkX25vZGUoJmxpc3RfeCwgZHgpOwoKICAgIGlmIChsaXN0X3gpCiAgICB7CiAgICAgICAgc3RydWN0IGRhdGFfeCogeCA9IGxpc3RfeC0+ZGF0YTsKICAgICAgICBwcmludGYoInguaT0lZCB4LmM9JWNcbiIsIHgtPmksIHgtPmMpOwogICAgfQoKICAgIHN0cnVjdCBsaW5rZWRfbm9kZSogbGlzdF95ID0gMDsKICAgIHN0cnVjdCBkYXRhX3kqIGR5ID0gbWFsbG9jKHNpemVvZigqZHkpKTsKICAgIGR5LT5zID0gImhlbGxvIjsKCiAgICBhZGRfbm9kZSgmbGlzdF95LCBkeSk7CgogICAgaWYgKGxpc3RfeSkKICAgIHsKICAgICAgICBzdHJ1Y3QgZGF0YV95KiB5ID0gbGlzdF95LT5kYXRhOwogICAgICAgIHByaW50ZigieS5zPSVzXG4iLCB5LT5zKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=