使用宏

时间:2015-06-01 02:56:33

标签: c macros c-preprocessor

我正在使用脚本引擎,我希望能够做这样或类似的事情:

const char* script = SOME_MACRO(
    function foo() {
        print "bar";
    }
    foo();
)
OS* engine = OS::create();
engine->eval(script);

实现这一目标的好方法是什么?

我知道对于多行宏,我需要在行尾添加\,如果可能的话,我想避免使用一堆带引号的字符串,因为我的脚本可能也会引用字符串,而id就像保留行号一样。

有没有好办法呢?

1 个答案:

答案 0 :(得分:3)

您不需要宏。您可以使用原始字符串文字。

const char* script = R"SCRIPT_DELIMITER(
    function foo() {
        print "bar";
    }
    foo();
)SCRIPT_DELIMITER";

您可以将SCRIPT_DELIMITER替换为您想要的任何分隔符,最多16个字符,不带括号,反斜杠或空格,并且序列)YOUR_DELIMITER"不能出现在您的字符串中(因为它用于终止它。)