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.
// The follwoing is a parametized partially expanding concatenation macro.
// It is a extremly good test of expansion order and the order of operations
// during macro expansion in general.
#define CAT(a, b) a ## b
#define PARTIAL_CAT(i) CAT(PARTIAL_CAT_, i)
#define PARTIAL_CAT_0(a, b) CAT(a, b)
#define PARTIAL_CAT_1(a, b) CAT(PARTIAL ## a, b)
#define PARTIAL_CAT_2(a, b) CAT(a, b ## PARTIAL)
#define PARTIAL_CAT_3(a, b) CAT(PARTIAL ## a, b ## PARTIAL)
#define X Token1
#define Y Token2
PARTIAL_CAT(0)( PARTIAL X, Y PARTIAL )
//E #line 34 "test_files/test5.cpp"
PARTIAL_CAT(1)( PARTIAL X, Y PARTIAL )
PARTIAL_CAT(2)( PARTIAL X, Y PARTIAL )
PARTIAL_CAT(3)( PARTIAL X, Y PARTIAL )
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