10 Sep
2013
10 Sep
'13
3:23 a.m.
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 ] ]