Compilers only compile .cpp files, the .h files are ignored completely. You have to #include the .h files you want compiled in at least one .cpp file. In your case, line 14 of verbs.h should actually be in a .cpp file and not in a .h file.

The way it works is that actual definitions (line 14 of verbs.h) can only exist once, and declarations (line 1 of main.h) can exist any number of times. Since headers are usually included multiple times, you shouldn't put actual definitions in them, only declarations.

And life was good. But then from day to day I would always add and/or delete a verb, which in turn MAX_OBJ_VERBS would need to change to.

Now, for the 5 or so .cpp files that needed CUDDLE, EMBRACE, FLIP, GROPE and HUG, and the other 140+ .cpp files that needed v_data.theData[], I was/am trying to be able to add verbs without a 10 minute compile time.