I don't think there's any reason to prefer #ifndef guards anymore.  Any compiler that supports the stuff in here is going to support #pragma once.