Wave: A Standard compliant C++ preprocessor
Copyright (c) 2001-2004 Hartmut Kaiser
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
See Copyright.txt for full acknowledgements.
// This sample is taken from the C++ standard 220.127.116.11 [cpp.scope]
// Currently this test fails due to a pathologic border case, which is included
// here. Wave currently does not support expanding macros, where the
// replacement-list terminates in partial macro expansion (such as the
// definition of the macro h below). This will be fixed in a future release.
#define x 3
#define f(a) f(x * (a))
#define x 2
#define g f
#define z z
#define h g( ~
#define m(a) a(w)
#define w 0,1
#define t(a) a
f(y+1) + f(f(z)) % t(t(g)(0) + t)(1);
g(x+(3,4)-w) | h 5) & m(f)^m(m);
// results in:
//E #line 32 "test_files/test10.cpp"
//E f(2 * (y+1)) + f(2 * (f(2 * (z)))) % f(2 * (0)) + t(1);
//E f(2 * (2+(3,4)-0,1)) | f(2 * g( ~ 5)) & f(2 * (0,1))^m(0,1);
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
Man throws away trove of Bitcoin worth $7.5 million