Sorry to comment on only the subject and not the content, but "#define CTO" just makes sure that CTO is recognized as something but makes it completely empty. All it's good for (standard C pattern) is asking "#ifdef CTO" and then it will happily reply: yes there is a CTO, just don't try to use it! Actually this does fit in nicely with the article, but to be pedantic maybe a typedef would have been better!