In short, the problem is that you can&#x27;t do:<p>readable code -&gt; [preprocessor transform] -&gt; transformed code -&gt; [apply transformation tool] -&gt; [reverse preprocessor transform] -&gt; readable code<p>Because both the preprocessor (and potentially arbitrary transformation tool?) are not bijective.<p>Couldn&#x27;t you add detection for when the reverse transformation isn&#x27;t bijective, and then report an error in those cases.<p>Just because there are examples of abuse of header files and macros in C++, it doesn&#x27;t mean all of it is like that -- especially modern C++. So these tools could still work for a lot of cases.<p>Please, don&#x27;t give up!