[c preprocessor] конкатенация двух переменных
В любом случае, не надо так извращаться,
cpp для этого не предназначен.
Возьми m4.
---
...Я работаю антинаучным аферистом...
вроде
---
...Я работаю антинаучным аферистом...
cpp для этого не предназначен.
я понимаю, однако это в одном месте надо сделать, не хотелось бы приплетать что-то внешнее
Навряд ли это возможно.
после получаса извращений у меня стало складываться такое же впечатление
В более продвинутом использовании можно так:
#define concat(a,b) a ## b
int concat(func,tionint x);
результат эквивалентен такому (вывод gcc -E ):
int function(int x);
Что есть s1, s2?это строки
считайте, что нам они не известны, а есть только макросы A и B
то существовал бы примитив определения макроса.
Как define в m4.
Такого примитива в cpp я не помню.
---
...Я работаю антинаучным аферистом...
#define B "y"
#define C A B
#include <stdio.h>
int main {
printf("%s\n", C);
}
извини, видимо, я неясно выразился
не Си-строки
не знаю, как объяснить...
хочу, чтобы для
#define A s1
#define B s2
#define C ?
C
gcc -E выдавал s1s2
Лол?
не Си-строки
не знаю, как объяснить...
понимание пришло только тогда, когда начал понимать, по какому алгоритму работает препроцессор
решение:
#define _CONCATENATION(a,b) a ## b
#define CONCATENATION(a,b) _CONCATENATION(a,b)
#define A s1
#define B s2
#define C CONCATENATION(A,B)
Охренеть извращение.
Не люблю cpp.
---
...Я работаю антинаучным аферистом...
Вычисление путём передачи параметров?ага. я тоже в шоке.
Охренеть извращение.
Ёпта! А я и не знал как ещё головой об стенку можно биться!
особенно замечательно, что это корректно согласно стандарту (т.е. никакого неопределенного поведения зависящего от реализации тут нет)
а что в этом удивительного? cpp очень даже продуманно сделан имхо.
Самый продуманный - в C#
а что в этом удивительного?я и не говорю, что удивительно
cpp очень даже продуманно сделан имхо.но про стандарт C в целом этого не скажешь, имхо.
Оставить комментарий
a10063
не подскажете, как получить макрос C со значением s1s2 и возможно ли?