Я перевел мою проблему к этому фрагменту кода - но это часть более крупной программы, поэтому я не хочу другого способа сделать это - мне нужен способ сделать этим работа!
Когда я генерирую предварительно обработанный файл из этого кода:
#define OUTER(a, b) \
a##b
#define INNER(c, d) \
c##d
enum foo {
OUTER(INNER(x, y), z)
}; // line 108
int APIENTRY _tWinMain(...)
{
foo bar = xyz; // line 112
}
, я получаю:
enum foo {
xyz
}; // line 108
int __stdcall wWinMain(...)
{
foo bar = xyz; // line 112
}
, что я и хочу.Однако, если я пытаюсь скомпилировать код, я получаю:
ошибка C2146: синтаксическая ошибка: отсутствует '}' перед идентификатором 'z', строка 108
ошибка C2143: синтаксическая ошибка: отсутствует ';'перед строкой '}' ошибка 108
C2143: синтаксическая ошибка: отсутствует ';'до '}' строка 108
ошибка C2059: синтаксическая ошибка: '}' строка 108
ошибка C2065: 'xyz': необъявленная строка идентификатора 112
Не могу разобраться!Кажется, что проблема вызвана ##
в:
#define OUTER(a, b) \
a##b
, но почему (и как это исправить) мне не хватает ...