使用C宏将字符串转换为非字符串

y30*_*y30 6 c c++ c-preprocessor

我知道可以将像这样的东西转换成字符串:

#define STRING(s) #s

printf("%s", STRING(i am string));
Run Code Online (Sandbox Code Playgroud)

但有可能做相反的事情吗?

#define MyType(type) ??? 

MyType("uint16_t") myint = 100;
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

AFAIK,无法使用标准C预处理器。您想要的不是标准C11(或C99)语言的一部分。而且C ++ 11或C ++ 14(与C不同的语言)都没有。

但是,您可能会使用一些不同的预处理器或脚本来将您的怪异源文件转换为C文件。

您可能还可以自定义编译器(例如,使用GCC插件或MELT扩展名),以通过其他内置函数或编译指示添加此类行为。那将是非常特定于编译器的,可能需要比您负担得更多的工作。