auto header guard for cpp