因此,我希望有一个文件,可以有条件地将其包含为代码或字符串。像这样:
#define something
#include "myfile.inc"
#undef something
const char myfileasastring =
#include "myfile.inc"
myfile.inc将是这样的简单代码:
something // anything extra here is fine as long as it goes away in the code include case
int myfunc() { return 23; }
这可能吗?我试着让#define一些R(“ mystring并用它启动myfile,但这似乎不起作用。
我的特定用例是GLSL着色器,当在GL下运行时,我需要将其作为字符串传递给GL驱动程序,但是在软件仿真中运行时,我希望将其编译为CPP代码。
对于这两种情况,我都希望使用相同的文件。我知道在项目/制造/构建级别上有许多变通办法,甚至只是剪切和粘贴都不是很糟糕,但是拥有一种可移植的编译器级别的实现方法将是一件很不错的事情。
未检测到欺骗。我知道如何作为一个xor另一个包含,但不作为一个或同一个文件包含。我也知道如何使用外部工具来做到这一点,我真的只是想知道是否只是想在普通的可移植c ++ 11中使用。这可能是不可能的。(尝试再次删除dupe标签。如果您仍然认为它是dupe,请发表评论)
抱歉浪费大家的时间。我想通了,这很容易:
test.inc:
#ifdef ASSTRING
R"foo(
#else
int do () { return 23; }
// )foo";
#endif
main.cpp
#define ASSTRING
const char s[] =
#include "test.inc";
#undef ASSTRING
#include "test.inc"
printf ( "hello\n%s\n%i\n", s+6, me() );
都将打印代码并运行它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句