With C++, a million errors are oftentimes one error a million different ways.
After transcribing the ~300 lines I tried to compile for the first time: 3728 errors and warnings...
I read through the code and everything looked correct, so I gave up.
Picked it up again some weeks later. Turned out that I had, by force of habit, erroneously added a semicolon at the end of macro definition on line 3. Fixing that it compiled flawlessly.
At the time I was also unaware that I was actually using a C++ compiler, djgpp, which I'm sure did the error count no favors.