我知道可以将像这样的东西转换成字符串:
#define STRING(s) #s
printf("%s", STRING(i am string));
但是可以做相反的事情吗?
#define MyType(type) ???
MyType("uint16_t") myint = 100;
答案 0 :(得分:4)
AFAIK,使用标准C预处理器是不可能的。你想要的不是标准C11(或C99)语言的一部分。它既不是C ++ 11或C ++ 14的一部分(也是与C不同的语言)。
但您可能会使用一些不同的预处理器或某些脚本将您奇怪的源文件转换为某个C文件。
您也可以自定义编译器(例如,使用GCC插件或MELT扩展名)以通过其他内置函数或编译指示添加此类行为。这将是非常特定于编译器的,并且可能需要比您能负担得起的更多工作。