Tuesday, 15 May 2012

c++ - Can I explicitly undefine a macro for particular function? -


I wrote a template function to an integer quick log base 2. It works in my testing program, but when I pasted it in my main project, I found that I had a problem with the heading of the windows.h . The issue is that I get c ++ std :: numeric_limits & lt; T & gt; I am using windows.h on the max () function, which also includes the macro max , which is going to be a macro, not a namespace information And overrides my attempt to use the real C ++ function. Is there any way I can not do other than windows.h ? (Which is not really an option)

Here's my job:

  // return x where x = log2 (n) template & lt; Typename T & gt; T Log 2i (TN) {Static Constt Infinity (Stade :: Numeric_Limit : (Maximum)); Tx = 0; If (n == 0) {return infinite infinite; } If (n> 1) {When (n>> = 1) {++ x; }} Return x; }  

  static const t infinity ((std :: numeric_limits & lt; T & gt;: max) ());  

Will work: additional bracket blocks the macro extension.


No comments:

Post a Comment