I'm not sure about these defines. If this is included in public header files, they are defined globally and could conflict with something. It would be probably best to prefix them somehow.