Simple stack structure in C
Various thoughts

You never use the max_size field, so you should delete it.
When pushing, you never check to see if the stack is full, so you could overrun your array if you push too many items.
Your current implememtation does not utilize the first array slot items[0].  You could make a few easy changes to fix that.
You have a check for position &lt; 0 but it can never go negative.  You could even make position an unsigned value.

Rewrite
Here are your push and pop functions rewritten:
void stack_push(Stack *stack, int number)
{
    if (stack-&gt;position &gt;= STACK_MAX_SIZE) {
        fprintf(stderr, &quot;Stack is full\n&quot;);
        return;
    } 
    stack-&gt;items[stack-&gt;position++] = number;
}

int stack_pop(Stack *stack)
{
    if (stack-&gt;position == 0) {
        fprintf(stderr, &quot;Stack is empty\n&quot;);
        return -1;
    }
    return stack-&gt;items[--stack-&gt;position];
}