I don't like such kind of preprocessor magic, it's unreadable.