/* Copyright (c) 1992 by AT&T Bell Laboratories. */ /* Advanced C++ Programming Styles and Idioms */ /* James O. Coplien */ /* All rights reserved. */ #define STACK_SIZE 10 struct Stack { long items[STACK_SIZE]; int sp; }; void Stack_initialize(s) struct Stack *s; { s->sp = -1; } long Stack_top(s) struct Stack *s; { return s->items[s->sp]; } long Stack_pop(s) struct Stack *s; { return s->items[s->sp--]; } void Stack_push(s, i) struct Stack *s; long i; { s->items[++s->sp] = i; } int main() { struct Stack q; int i; Stack_initialize(&q); Stack_push(&q,1); i = Stack_top(&q); Stack_pop(&q); }