Witajcie,
Mam za zadanie napisać prosty programik wykonujący kontkatenację dwóch stringów za pomocą define. Długo się nad tym męczyłem i za chiny nie chciało działać. Przy pomocy stackoverflow skombinowałem taki programik:
#include <stdio.h>
#define CONCAT1(X, Y) X ## Y
#define CONCAT(X, Y) CONCAT1(X, Y)
#define PRINT1(X) #X
#define PRINT(X) PRINT1(X)
#define A abc
#define B ttt
int main(void) {
printf("%s", PRINT(CONCAT(A, B)));
return 0;
}
W takiej postaci działa. Mam dwa pytania. Dlaczego muszą być dwie funkcje, gdzie jedna wywołuje drugą (CONCAT -> CONCAT1 oraz PRINT -> PRINT1). Bez tego nie zadziała... Po drugie program działa tylko, gdy tekst jest w stałych, czy da się w ogóle przepisać to na zmienne?