2015-06-01 71 views
0

我有一個腳本引擎工作的一個劇本,我希望能夠做這樣的事情或類似:使用內聯宏

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

這將是一個很好的方式來實現這一目標?

我知道對於多行宏,我需要在行尾有\,並且如果可能的話,我想避免使用一堆帶引號的字符串,因爲我的腳本也可能會引用帶引號的字符串,並且編號喜歡保存行號。

有沒有這樣做的好方法?

回答

3

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

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

你可以用任何你想要的分隔符來替換SCRIPT_DELIMITER,最多16個字符,沒有括號,反斜槓或空格,該序列)YOUR_DELIMITER"不能出現在你的字符串(因爲它是用來終止它)。