title: How do predefined macro's __FILE__, __LINE__, __func__ ,stringify(#) work?
body: <p>If my compiler supports these predefined macros (<code>__FILE__, __LINE__, __func__</code>) then I can safely use them and assume it will always report the right file and line according to : <a href="https://stackoverflow.com/questions/597078/file-line-and-function-usage-in-c">__FILE__, __LINE__, and __FUNCTION__ usage in C++</a></p>
  
  <p>I also read that variable names, line numbers and such aren't relevant to the assembly end-code that is executed (the actual .exe file produced from .cpp code), if this is the case then how do these macros work when used in code? How is a <code>__LINE__</code> macro represented in assembly code? How can the .exe file know the correct line number of the original .cpp source when it comes across a <code>__LINE__</code> macro?</p>