https://mytecharm.com.co/post/c-preprocessor-tricks-tips-and-idioms-7pe95p