声明:我不是C程序员。使用预处理器将代码转换为字符串
我最近看到一个朋友的项目。由于我不明白的原因,他将代码写入运行时编译的字符串中。这导致类似:
char x[] = "int y = 5; printf(\"%i\", y)";
run_this_code(x);
这是可怕的使用,因为Visual Studio不会在步骤做语法高亮等
使用一些预处理器滥用,这是可以做到的伎俩Visual Studio的成认为你正在编写真正的代码,然后在编译器掌握源代码之前让预处理器将它变成一个字符串。这工作:
#define STRINGIFY(x) #x
int main(void){
char[] y = STRINGIFY(
int x = 5;
printf("%i", x);
);
printf("%s", y);
}
的问题,这是它打印出:
int x = 5; printf("%i\n", x);
的问题则是运行时编译器说,第1行的错误是没有使它包括新行的一种方式?
更新这不是我的问题。这是别人的代码,我只是对使用预处理器让他的生活更轻松的想法感兴趣。我不知道他为什么这样做。
更新删除所有提到的CUDA,因为这个问题是关于预处理器,而不是CUDA。
不工作? char x [] =“int x = 5; \ n printf(\”%i \“,x)”; – fazo 2010-11-26 10:25:55
我想要做的事情的目标是将VS欺骗成语法突出显示,“intellisensing”等编写在字符串中的代码。 – 2010-11-26 11:08:57