tokpaste.h (954B)
1 /* Copyright (c) 2001 Matej Pfajfar. 2 * Copyright (c) 2001-2004, Roger Dingledine. 3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. 4 * Copyright (c) 2007-2021, The Tor Project, Inc. */ 5 /* See LICENSE for licensing information */ 6 7 /** 8 * @file tokpaste.h 9 * @brief Token-pasting macros. 10 **/ 11 12 #ifndef TOR_LIB_CC_TOKPASTE_H 13 #define TOR_LIB_CC_TOKPASTE_H 14 15 /** 16 * Concatenate `a` and `b` in a way that allows their result itself to be 17 * expanded by the preprocessor. 18 * 19 * Ordinarily you could just say `a ## b` in a macro definition. But doing so 20 * results in a symbol which the preprocessor will not then expand. If you 21 * wanted to use `a ## b` to create the name of a macro and have the 22 * preprocessor expand _that_ macro, you need to have another level of 23 * indirection, as this macro provides. 24 **/ 25 #define PASTE(a,b) PASTE__(a,b) 26 27 /** Helper for PASTE(). */ 28 #define PASTE__(a,b) a ## b 29 30 #endif /* !defined(TOR_LIB_CC_TOKPASTE_H) */