Tworzenie czegoś zarówno jako identyfikator C, jak i łańcuch?

Powiedzmy, że chcesz wygenerować dopasowaną listę identyfikatorów i łańcuchów

enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};

myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");

.. bez powtarzania siebie i bez automatycznego generowania kodu, przy użyciu makr C / C ++

Początkowe przypuszczenie:

Możesz dodać plik #include zawierający

myDefine(NAME_ONE)
myDefine(NAME_TWO)
myDefine(NAME_THREE)

Następnie użyj go dwa razy:

#define myDefine(a) a,
enum {
#include "definitions"
}
#undef myDefine

#define myDefine(a) myFunc(a, "a");
#include "definitions"
#undef myDefine

ale #define nie pozwala na umieszczenie parametrów w ciągu?

questionAnswers(2)

yourAnswerToTheQuestion