Macro do contador do pré-processador
Existe uma maneira de criar umCOUNTER()
macro (que segue o padrão C ++ 11/14) que é expandida para um número que aumenta um a cada vezCOUNTER()
é invocado?
Eu pensei sobre isso, mas não consegui encontrar uma maneira de fazê-lo funcionar. Não encontrei uma maneira de armazenar "estado" noCOUNTER()
macro.
Exemplo:
#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;
}
Saída esperada:
TEST0
TEST1