Is there a way to create a COUNTER()
macro (which follows the C++11/14 standard) that is expanded to a number which increases by one every time COUNTER()
is invoked?
I've thought about it, but couldn't find a way to make it work. I didn't find a way to store "state" in the COUNTER()
macro.
Example:
#define COUNTER() <...> // Implementation goes here...
#define UNIQUE_NAME_1() TEST ## COUNTER()
#define UNIQUE_NAME_2() TEST ## COUNTER()
// Note how the COUNTER() macro can be used with other macros
// (it cannot be implemented with C++ code)
int main() {
std::cout << STRINGIFY(UNIQUE_NAME_1()) << std::endl;
std::cout << STRINGIFY(UNIQUE_NAME_2()) << std::endl;
}
Expected output:
TEST0
TEST1