<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'><div>Ok, very interesting stuff. </div><div><br></div><div>The problem is not a problem with the pre-processor.</div><div><br></div><div>SOME __attributes__ are substituted just fine.</div><div><br></div><div>For some reason, on my architecture the replacement does not happen for certain __attributes__.</div><div><br></div><div>https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html</div><div><br></div><div>1. # define NoDbgRegParms &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;--compiles</div><div>2.&nbsp;# define NoDbgRegParms __attribute__ ((regparm (0))) &nbsp; &lt;--function type mismatch error due to NoDbgRegParms not being replaced</div><div>3. # define NoDbgRegParms __attribute__ ((deprecated)) &nbsp; &nbsp;&lt;--This spit out a bunch of warnings (as expected) but it compiled! yay!</div><div>4. #define NoDbgRegParms  __attribute__ ((noinline)) &nbsp; &nbsp; &lt;--function type mismatch error due to NoDbgRegParms not being replaced</div><div>5. #define NoDbgRegParms  __attribute__ ((always_inline)) &nbsp;&lt;-- error: inlining failed in call to always_inline 'printNameOfClasscount': recursive inlining</div><div><br></div><br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div><div>regparm (number)<br><strong>On the Intel 386</strong>, the regparm attribute causes the compiler to pass up to number integer arguments in registers EAX, EDX, and ECX instead of on the stack. Functions that take a variable number of arguments will continue to be passed all of their arguments on the stack.</div></div></blockquote> <br><div>I am running an AMD processor.</div><div><br></div><div>I will research this some more.</div><div><br></div><div>cheers.</div><div><br></div><div>tty.</div><div><br></div><div><br></div><br></div></body></html>