gpt4 book ai didi

c++ - C/C++ 中的领域特定语言,这是 Kosher 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:19 25 4
gpt4 key购买 nike

当我想出这个“奇怪”的解决方案时,我只是在为 C/C++ 中的新项目设计一些领域特定语言设计:

 define DSL(...) MakeCommand(#__VA_ARGS__\
)->Exec()->GetResults()

MyResults results = DSL( for p in people do something );

好的部分是这是符合标准的(但 Duff Switch 也是如此),并且跨平台、可移植等……然而,这种方法实际上并不比将字符串写入代码更好,但是由于DSL 引擎无论如何都会解析字符串,这样看起来更漂亮,并且减少了困惑。但想知道其他人对此有何看法。

谢谢

最佳答案

嗯,虽然可变参数宏是 C99,但它们在 C++ 中是不可能的。我不会那样做 :) 一个简单的 dsl 函数采用 std::string 或您的框架使用的任何字符串类,并返回 MakeCommand(str)->Exec()->GetResults() 将是我的首选,因为它更易于调试,并且您可以将其放入命名空间。

您还可以动态构建命令字符串并将其传递给函数。使用您的宏方法,传递 str 变量实际上会将 "str" 传递给 MakeCommand 函数。您将需要另一个用于动态命令的宏才能使其正常工作,我对此并不满意。

关于c++ - C/C++ 中的领域特定语言,这是 Kosher 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com