相关疑难解决方法(0)

什么是C++仿函数及其用途?

我一直在听C++中的仿函数.有人可以给我一个关于它们是什么的概述以及在什么情况下它们会有用吗?

c++ functor function-object function-call-operator

822
推荐指数
8
解决办法
44万
查看次数

我们怎么知道调用者函数的名字?

在C语言中,__FUNCTION__可以用来获取当前函数的名称.但是,如果我定义一个名为a()的函数,并在b()中调用它,如下所示:

b()
{
    a();
}
Run Code Online (Sandbox Code Playgroud)

现在,在源代码中,有很多函数,比如b()调用a(),例如c(),d(),e()......

是否有可能在()中添加一些代码来检测调用a()的函数的名称?

进一步:

  1. 对不起误导性的拼写错误.我纠正了它.
  2. 我试图找出哪个函数调用a()进行调试.在同样的情况下,我不知道你怎么做?
  3. 我的代码在vxWorks下,但我不确定它是否与C99或其他相关.

c

26
推荐指数
5
解决办法
4万
查看次数

有没有办法得到"当前函数"的返回类型

我想编写一个模板,它将获取实例化函数的返回类型作为参数.

例如,假设我有一个Result模板类:

template<type T>
class Result {
    T _result_value;
    T& operator=( T that );
    ~Result( );
}
Run Code Online (Sandbox Code Playgroud)

这个类有几个专业.在析构函数中,我想记录返回类型,并且在operator=分配中我想检查并断言错误值.

理想情况下,我希望能够有这样的定义:

#define RESULT Result< /* decltype magic for type of current function */ >
Run Code Online (Sandbox Code Playgroud)

所以我可以用它:

HFILE MyOpenFile( ... ) {
    RESULT result;
}
Run Code Online (Sandbox Code Playgroud)

...将被推断出来Result<HFILE>.这是一个简化的例子:编写RESULT代替Result<HFILE>并不是什么大问题,但是还有其他情况下不容易获得当前函数的返回类型.

c++ type-inference c++11

14
推荐指数
2
解决办法
2229
查看次数

指向当前功能的指针

有没有办法获得指向当前函数的指针,可能通过gcc扩展或其他一些技巧?

编辑我很好奇是否可以在没有明确使用函数名称的情况下获取函数指针.我以为我有充分的理由想要这个,意识到我不是真的,但我仍然很好奇是否有可能.

c gcc function-pointers

4
推荐指数
1
解决办法
1969
查看次数

我可以获得指向当前函数的指针吗?

是否有可能获得指向当前函数的指针?如果是,我该怎么办?

动机:我有一个功能做一些日志记录,并想打电话

log(currentfunc, "blabla")
Run Code Online (Sandbox Code Playgroud)

例如,哪些输出.

c logging pointers function

4
推荐指数
1
解决办法
1071
查看次数