Create an interface for preprocessor directives

Signed-off-by: Josh Kilmer <srjek2@gmail.com>