I started writing a simple interpreter in C++ with a class structure that I will describe below, but I quit and rewrote the thing in Java because headers were giving me a ha
Most header files should be wrapped in an include guard:
#ifndef MY_UNIQUE_INCLUDE_NAME_H #define MY_UNIQUE_INCLUDE_NAME_H // All content here. #endif
This way, the compiler will only see the header's contents once per translation unit.