#include "prb.h" #include struct type { i32 i32_element; i16 i16_element; u8 u8_element; }; #define nodes_count 10 struct stack_node { i32 value; struct stack_node *next; }; struct stack { struct stack_node *first; struct stack_node *last; }; static void print_stack(struct stack s) { for (struct stack_node *node = s.first; node; node = node->next) printf("%d%s", node->value, ((node->next) ? " -> " : "\n")); } i32 main(void) { u64 offset = offsetof(struct type, u8_element); assert(offset == 6); info("offsetof(type_t, u8_element) = %lu", offset); info("stack:"); struct stack_node nodes[nodes_count]; struct stack stack = {0}; for (i32 i = 0; i < array_count(nodes); ++i) { struct stack_node *node = nodes + i; node->value = i; sllpush(stack.first, stack.last, node); } print_stack(stack); sllpop(stack.first, stack.last); print_stack(stack); }