Mam funkcję, która zwraca wartość całkowitą. Teraz chcę napisać makro, które wywołuje tę funkcję, pobiera wartość zwracaną i dodaje do niej ciąg znaków i zwraca wynikowy ciąg znaków.Makro w C wywołanie funkcji zwracającej liczbę całkowitą, a następnie zwrócenie ciągu znaków
Próbowałem to:
#define TEST(x) is_enabled(x)
nazywam tego makra w głównej funkcji jak:
int ret = 0;
ret = TEST(2);
printf("PORT-%d\n", ret);
Działa to doskonale. Jednak chcę, aby makro zwróciło ciąg PORT-x, gdzie x jest zwracaną wartością wywołanej funkcji. Jak mogę to zrobić?
EDIT:
Próbowałem też pisząc go na wiele linii jak:
#define TEST(x)\
{\
is_enabled(x);\
}
i nazwał go w głównej funkcji jak:
printf("PORT-%d\n", TEST(2));
Ale to daje kompilacji błąd czasu:
error: expected expression before â{â token
Można to zrobić, pisząc makro, które "wywołuje" 'sprintf', ale musisz przydzielić bufor i przekazać go do tego makra. Pytanie brzmi: dlaczego chcesz to zacząć? Ponieważ czujesz, że próbujesz rozwiązać coś w niewłaściwy sposób. –
Dlaczego nie możesz użyć 'strcat'? Dlaczego wymagane jest makro? – Gopi
Powinieneś zdecydowanie napisać funkcję dla tego ... – Antzi