Wiem, że jest możliwe, aby przekształcić coś do łańcucha z makro tak:Konwersja ciąg non ciąg z C makro
#define STRING(s) #s
printf("%s", STRING(i am string));
Ale możliwe jest, aby zrobić coś przeciwnego?
#define MyType(type) ???
MyType("uint16_t") myint = 100;
Pachnie strasznie jak [problem XY] (http://xyproblem.info). Naprawdę powinieneś ** poprawić swoje pytanie ** (edytując je), aby go zmotywować. Nie mogę sobie wyobrazić przypadku, w którym robienie tego, co chcesz, jest naprawdę przydatne. –
Ale skąd wiadomo, jak przekonwertować go z łańcucha na dowolny typ? Czy zawsze będzie to typ całkowity o pewnej precyzji? A co z zmiennoprzecinką? –
Preprocesor może łączyć ze sobą żetony, ale nie może złamać tokena, więc krótka odpowiedź brzmi NIE. Możesz jednak stworzyć coś, co może zrobić coś podobnego, ale zależy to od przypadku użycia i problemu, ale nie sądzę, że jest to rzecz, której naprawdę potrzebujesz. – ST3