【发布时间】:2017-11-22 15:27:15
【问题描述】:
我需要调用一个作为参数传递给另一个函数的函数,并且必须首先将其所需的参数传递给它。在c++中,这个问题是通过一个宏来解决的:
#include <iostream>
#define CALL(x) x; \
std::cout << "Called!" << std::endl;
void foo(int a, int b)
{
std::cout << a * b << std::endl;
}
int main()
{
CALL(foo(9, 8)); // I want to pass 2 int parameters inside 'foo' function call
system("PAUSE");
}
它的输出:
> 72
> Called!
这正是我需要在 D 中调用函数的方式。有什么想法吗?
编辑: 我需要在 D 中完成此操作。我想在 CALL 中调用“foo”,例如:
CALL(foo(9, 8)) // and not like: CALL(foo, 9, 8)
但我不知道这是如何在 D 中实现的。也许使用 mixin?
【问题讨论】:
-
是D还是C++的问题?
-
“在 c++ 中,这个问题是用宏解决的”。这不是更好的方法,模板方法更好(但语法略有不同)。
-
@YSC 对不起,如果我没有说清楚,是关于 D。我只举一个例子来说明我是如何在 c++ 中做到的。
-
这是误导,我在你的问题上浪费了时间,不酷。
-
@YSC 也许你应该在急于回答之前完整阅读这个问题。在第一个版本中,它说“这正是我需要在 D 中调用函数的方式。”我发现很明显这是一个 D 问题,而 C++ 就是展示所需内容的示例。如果你不留下那条尖刻的评论,我不会打扰,但在抱怨提问者的微尘之前,你需要先检查一下自己的眼睛。
标签: d