问题标签 [function-pointers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何在 C 中声明一组常量函数指针?
我需要声明一个指向函数的指针数组,如下所示:
但是,我希望将数组声明为常量——数组中的数据和指向数据的指针。不幸的是,我不记得在哪里放置 const 关键字。
我假设实际的指针 MESSAGE_HANDLERS 在这种情况下已经是常量,因为它被声明为一个数组。另一方面,如果数组中的函数指针按所示声明,它不能在运行时更改吗?
c - 如何从 Linux 内核中的函数指针获取函数名?
如何从C中的函数指针获取函数名?
编辑:真实情况是:我正在编写一个 linux 内核模块并且我正在调用内核函数。其中一些函数是指针,我想在内核源代码中检查该函数的代码。但我不知道它指向哪个函数。我认为可以这样做,因为当系统失败(内核恐慌)时,它会在屏幕上打印出当前调用堆栈以及函数名称。但是,我想我错了……是吗?
java - Java中的函数指针/委托?
对于我的 Java 游戏服务器,我发送数据包的操作 ID,它基本上告诉服务器数据包的用途。我想将每个动作 ID(一个整数)映射到一个函数。有没有办法在不使用开关的情况下做到这一点?
c++ - 从 vc++ 调用存储在堆中的代码
想象一下我正在做这样的事情:
如何定义一个函数指针来调用 p ,就好像它是一个函数一样?(我正在使用 VC++ 2008 express)。
谢谢
c++ - 如何将类成员函数作为回调传递?
我正在使用一个 API,它要求我将函数指针作为回调传递。我正在尝试在我的课堂上使用这个 API,但我遇到了编译错误。
这是我从构造函数中所做的:
这不会编译 - 我收到以下错误:
错误 8 错误 C3867:'CLoggersInfra::RedundencyManagerCallBack':函数调用缺少参数列表;使用 '&CLoggersInfra::RedundencyManagerCallBack' 创建指向成员的指针
我尝试了使用的建议&CLoggersInfra::RedundencyManagerCallBack
- 对我不起作用。
对此有任何建议/解释吗?
我正在使用VS2008。
谢谢!!
c++ - C ++,指向函数和指向成员函数的指针之间的等价?
我习惯于认为成员函数只是普通函数的一种特殊情况,其中成员函数在其参数列表的开头有一个额外的参数,用于 'this' 指针,即成员函数所在的对象应该采取行动。我过去曾以这种方式使用过 boost::function 并且从未遇到任何问题:
但是我已经看到了成员函数指针的这种语法:
在此语法中,“this”参数不可见。这让我想知道,指向成员函数的指针是否真的是一个单独的野兽,而这种提升正在为我处理细节。
标准对“this”参数的位置有何规定?也许只是在我的编译器上,额外的“this”参数首先出现,也许在其他编译器上它可能在最后?我是否很幸运,我的思维方式与我的编译器(GCC4、VS2005)处理它的方式一致?指向成员函数的指针总是只是带有额外参数的指向函数的特例,还是编译器可以以不同的方式实现它们?
c++ - 如何将 COM 方法作为函数参数传递?和 Microsoft 编译器错误 C3867
我想将 COM 方法作为函数参数传递,但出现此错误(Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86):
错误 C3867:“IDispatch::GetTypeInfoCount”:函数调用缺少参数列表;使用 '&IDispatch::GetTypeInfoCount' 创建指向成员的指针
我错过了什么?
非常感谢你。
c++ - 指向类成员函数问题的函数指针
首先,我必须承认我的编程技能非常有限,并且我接管了一个(非常小的)现有 C++ OOP 项目,我试图将自己的东西推入其中。不幸的是,我遇到了一个超出我知识范围的问题,并且我希望能在这里找到一些帮助。我正在使用第三方库(无法更改)从相机中获取图像,并将在此处使用一些占位符名称。
第三方库有一个函数“ThirdPartyGrab”来启动连续实时抓取,并获取一个指向函数的指针,每次新帧到达时都会调用该函数。所以在一个普通的 C 应用程序中它是这样的:
“HookFunction”需要声明为:
或声明为“BUF_HOOK_FUNCTION_PTR”
现在我有一个 C++ 应用程序和一个类“MyFrameGrabber”,它应该封装我所做的一切。所以我将钩子函数作为私有成员放入,如下所示:
我的班级中还有一个公共 void 函数“StartGrab”应该启动 Grab。在里面我试着打电话:
这(不足为奇)失败了。它说对 MyFrameGrabber::HookFunction 的函数调用错过了参数列表,我应该尝试使用 &MyFrameGrabber::HookFunction 来创建一个指针。但是,传递“&MyFrameGrabber::HookFunction”会导致另一个错误,即无法将其转换为 BUF_HOOK_FUNCTION_PTR。
通读C++ FAQ 函数指针后,我想我理解了问题,但无法提出解决方案。我试图将钩子函数设为静态,但这也会导致转换错误。我也想过将钩子函数放在类之外,但我需要在钩子函数中使用类函数。有没有其他方法或者我需要改变我的整个概念?
编辑 14.01.08:我测试了单例解决方法,因为我无法更改第三方库,并且 void 指针仅用于钩子函数内部使用的数据。不幸的是,它并没有像我希望的那样开箱即用......我不知道静态函数是否需要放在一个单独的类中,所以我把它放在我的“MyFrameGrabber”类中:
在我的 cpp 文件中,我有 call_hook 函数:
但这给了我一个错误,static MatroxFrameGrabber _instance;
因为找不到匹配的标准构造函数。这是正确的,因为我的 MyFrameGrabber 构造函数如下所示:
我试图放入一个空的构造函数MyFrameGrabber();
,但这会导致链接器错误。我应该将空参数传递给单例中的 MyFrameGrabber 构造函数吗?或者我是否需要一个单独的 Hook 类,如果是,我如何访问 MyFrameGrabber 函数?提前致谢。
第二次编辑 15.01.08:我应用了更改,现在可以编译和链接。不幸的是,我还不能在运行时测试它,因为它是一个 DLL,而且我还没有 Debug Caller Exe,并且在初始化等过程中还有其他问题。我会将帖子标记为答案,因为我确信这是正确的方法。
java - Java中的回调函数
有没有办法在 Java 方法中传递回调函数?
我试图模仿的行为是将.Net Delegate 传递给函数。
我见过有人建议创建一个单独的对象,但这似乎有点矫枉过正,但是我知道有时矫枉过正是做事的唯一方法。
c++ - 我可以简化一下吗?
addFunction 方法将函数添加到基类中的列表中,
然后可以枚举该列表以调用所有函数。
有什么方法可以简化(减少打字工作)添加功能?