Boost logo

Boost Users :

Subject: [Boost-users] [wave] Wave macro expansion problem
From: Edward Diener (eldiener_at_[hidden])
Date: 2013-09-09 23:23:24


The code:

// test_macros_o.cpp

#define f(a) f(x + (a))
#define x 2
#define g f
#define h g(~

int main()
   {

#pragma wave trace(enable)
           
   h 5);
           
#pragma wave trace(disable)

   return 0;
   }

In the latest C++ standard at 16.3.5 paragraph 5 the expansion of
'h 5)' is given as:

f(2 * (~5))

but the wave.exe driver gives:

C:\Programming\VersionControl\boost\libs\vmd\test\test_macros_o.cpp:11:3: h
 
C:\Programming\VersionControl\boost\libs\vmd\test\test_macros_o.cpp:4:9:
see macro definition: h
   [
     g(~
     rescanning
     [
 
C:\Programming\VersionControl\boost\libs\vmd\test\test_macros_o.cpp:3:9:
see macro definition: g
       [
         f
         rescanning
         [
           f
         ]
       ]


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net