微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将没有引号的字符串传递给函数?

如何解决如何将没有引号的字符串传递给函数?

template<typename... Args>
void callJavaScript(const Args&... args) {
     // TO-DO
}

callJavaScript({
   console.log("Hello World")
})

是否可以使用 Variadic 模板(有/没有宏 hack)来完成这样的事情?

相反

callJavaScript("{
   console.log('Hello World')
}")

我想要

callJavaScript({
   console.log("Hello World")
})

这是我发现使用宏的示例,

#define MULTI_LINE_STRING(a) #a
const char *text = MULTI_LINE_STRING(
  Using this trick(,) you don't need to use quotes.
  Though newlines and     multiple     white   spaces
  will be replaced by a single whitespace.
);

这是我的这个宏的版本,

#define createScript(name,...)                 \
const char *name = #__VA_ARGS__;

解决方法

回答我自己的问题。

void callJavaScript(std::string script) {

    std::cout << script << "\n";
}

#define callJavaScript(...) callJavaScript(#__VA_ARGS__)

现在你可以这样调用了,

callJavaScript({
   console.log("Hello World")
})

你可以编译这个然后它会输出

{console.log("Hello World")}

如果有人有更好的模板方法,请告诉。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。