user43127: This might be more a general programming question, but I am using the Arduino compiler, and I've created my own ISR driven version of millis(), which I simply call myMillis(). So let's say I'd like to use this addition to a working project. Rather than do a global search and replace, I got the idea to simply put this define near the top of the program...
#define millis myMillis

uint32_t myMillis() 
  { // my code ...
  }

So when I compile, every instance of millis() does indeed compile as if I did a global search and replace. I like that, because it means I don't have to make the change permanent, and can easily comment out my defines to compare program operation.
My question is, if I do as I just explained, what if, for whatever reason, there is some place within the project where I actually WANT to call the original version. A simple example might be if I wanted to occasionally output a message via serial.println(), comparing the returned value of millis() and myMillis(). I think there is a way to specify such an exception to my #define MACRO, but I'm not sure how. 

user4143: Not related to your problem, but it is worth noting that your define only exists in your sketch (known as a translation unit). Other translation units (the core, libraries, etc) never get to see it.
To make everything see  it youould have to place the define in a location that everything sees, such as Arduino.h in the core, for it to affect anything other than your sketch.
Once you have replaced millis there is no way to unreplace it. You could, though, make use of the scope limiting I talk about above to make a separate translation unit (maybe a small library) with a single function in it that calls millis. As long as that never sees the define it will still see the original function name.

user37622: There is no way to suppress define substitution. You could use #undef and then #define again in required section.
Name the define MILLIS and use this name in code, except where you want the original millis() function.

43127: <p>This might be more a general programming question, but I am using the Arduino compiler, and I've created my own ISR driven version of millis(), which I simply call myMillis(). So let's say I'd like to use this addition to a working project. Rather than do a global search and replace, I got the idea to simply put this define near the top of the program...</p>

<pre><code>#define millis myMillis

uint32_t myMillis() 
  { // my code ...
  }
</code></pre>

<p>So when I compile, every instance of millis() does indeed compile as if I did a global search and replace. I like that, because it means I don't have to make the change permanent, and can easily comment out my defines to compare program operation.</p>

<p>My question is, if I do as I just explained, what if, for whatever reason, there is some place within the project where I actually WANT to call the original version. A simple example might be if I wanted to occasionally output a message via serial.println(), comparing the returned value of millis() and myMillis(). I think there is a way to specify such an exception to my #define MACRO, but I'm not sure how. </p>
 4143: <p>Not related to your problem, but it is worth noting that your define only exists in your sketch (known as a <em>translation unit</em>). Other translation units (the core, libraries, etc) never get to see it.</p>

<p>To make everything see  it youould have to place the define in a location that everything sees, such as Arduino.h in the core, for it to affect anything other than your sketch.</p>

<p>Once you have replaced millis there is no way to unreplace it. You could, though, make use of the scope limiting I talk about above to make a separate translation unit (maybe a small library) with a single function in it that calls millis. As long as that never sees the define it will still see the original function name.</p>
 37622: <p>There is no way to suppress define substitution. You could use #undef and then #define again in required section.</p>

<p>Name the define MILLIS and use this name in code, except where you want the original millis() function.</p>
