[c preprocessor] конкатенация двух переменных
Навряд ли это возможно.
В любом случае, не надо так извращаться,
cpp для этого не предназначен.
Возьми m4.
---
...Я работаю антинаучным аферистом...
В любом случае, не надо так извращаться,
cpp для этого не предназначен.
Возьми m4.
---
...Я работаю антинаучным аферистом...
#define AB A##B
вроде
вроде
Оно не решает поставленной задачи.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
cpp для этого не предназначен.
я понимаю, однако это в одном месте надо сделать, не хотелось бы приплетать что-то внешнее
Навряд ли это возможно.
после получаса извращений у меня стало складываться такое же впечатление

Что есть s1, s2?
В более продвинутом использовании можно так:
результат эквивалентен такому (вывод gcc -E
):
В более продвинутом использовании можно так:
#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 в m4.
Такого примитива в cpp я не помню.
---
...Я работаю антинаучным аферистом...
#define A "x"
#define B "y"
#define C A B
#include <stdio.h>
int main {
printf("%s\n", C);
}
#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.
---
...Я работаю антинаучным аферистом...
Вычисление путём передачи параметров?ага. я тоже в шоке.
Охренеть извращение.
Ёпта! А я и не знал как ещё головой об стенку можно биться!
для меня тоже было открытием
особенно замечательно, что это корректно согласно стандарту (т.е. никакого неопределенного поведения зависящего от реализации тут нет)
особенно замечательно, что это корректно согласно стандарту (т.е. никакого неопределенного поведения зависящего от реализации тут нет)
а что в этом удивительного? cpp очень даже продуманно сделан имхо.
Самый продуманный - в C#
а что в этом удивительного?я и не говорю, что удивительно
cpp очень даже продуманно сделан имхо.но про стандарт C в целом этого не скажешь, имхо.
Оставить комментарий
a10063
не подскажете, как получить макрос C со значением s1s2 и возможно ли?