LINUX.ORG.RU

Удалить пробелы из макроса

 


0

2
#define TIER1 \
  TIER2(ABC) \
  TIER2(AB ) \
  TIER2(A C) \
  TIER2( BC)
#define TIER2(X) #X,
const char * tiers[] = {
TIER1
};
#undef TIER2
printf("%s\n", tiers[2]);
A C

Как объявить или что поменять чтобы было AC? Это будут имена файлов, там пробелы не нужны, плюс в другом месте этот XMACRO еще раз разворачивается, там тоже косяки в имена переменных.

Вопрос - как объявить #define TIER2(....... чтобы он убрал пробелы?

Зачем - там не три элемента (ABC), а 6 и хранить их просто кучкой нечитаемо, удобнее когда один под другим. Есть вариант через '_', пока оставлю как запасной.

★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Пробел внутри не убрать.

Можно попробовать дополнительный макрос, например, так:

_(A)_( )_(C)

E ★★★
()

Через запятые полущ. // на самом деле, в любом случае убиват.

$ preshell
/* ... */
> #define TIER(X, Y, Z) #X ## #Y ## #Z
> TIER(A, B, C)
"A""B""C"
> TIER(A,  , C)
"A""""C"
Kuzy ★★★
()
Последнее исправление: Kuzy (всего исправлений: 1)
Ответ на: комментарий от Kuzy

Даже в голову не пришло! Да щоб у тебе все было!

на самом деле, в любом случае убиват.

Ололо, скажи это тем, кто эту технику с 60х используют.

P.S. ## Не нужен.

sambist ★★
() автор топика
Последнее исправление: sambist (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.