问题标签 [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++ 函数指针和类
说我有:
只要我要用于渲染的函数是函数或static
成员函数,这很好:
但是,我真的希望能够使用类方法,因为在大多数情况下,渲染函数会想要访问成员变量,并且我宁愿不使类实例成为全局的,例如
但是我真的不知道如何做到这一点,并且仍然允许使用函数和static
成员函数。
c++ - 使用指向成员函数的指针与使用开关的成本是多少?
我有以下情况:
在我当前的实现中,我将 in 的值保存whichFoo
在构造函数中的数据成员中,并使用switch
incallFoo()
来决定调用哪个 foo。或者,我可以switch
在构造函数中使用 a 来保存指向要在fooN()
中调用的权利的指针callFoo()
。
callFoo()
我的问题是,如果 A 类的对象只构造一次,而被调用很多次,那么哪种方式更有效。因此,在第一种情况下,我们多次执行 switch 语句,而在第二种情况下,只有一个 switch,并且使用指向它的指针多次调用成员函数。我知道使用指针调用成员函数比直接调用要慢。有谁知道这个开销是多于还是少于 a 的成本switch
?
澄清:我意识到,除非您尝试并计时,否则您永远不会真正知道哪种方法可以提供更好的性能。但是,在这种情况下,我已经实现了方法 1,我想知道方法 2 是否至少在原则上更有效。看来它可以,现在我费心去实现它并尝试它是有意义的。
哦,出于美学原因,我也更喜欢方法 2。我想我正在寻找实施它的理由。:)
java - Java 中最接近函数指针的替代品是什么?
我有一个大约十行代码的方法。我想创建更多的方法来做同样的事情,除了一个小的计算会改变一行代码。这是一个完美的应用程序,用于传递函数指针以替换该行,但 Java 没有函数指针。我最好的选择是什么?
c - 我们可以在 C 中使用函数指针调用函数吗?
我们可以使用函数指针调用函数吗?如果是的话怎么办?
c - 如何使用函数指针数组?
我应该如何在 C 中使用函数指针数组?
我怎样才能初始化它们?
design-patterns - TCL有函数指针的概念吗?
与 TCL 合作,我想实现类似Strategy Pattern的东西。我想在 TCL 函数中传递用于打印输出的“策略”,这样我就可以轻松地在打印到屏幕和打印到日志文件之间切换。在 TCL 中执行此操作的最佳方法是什么?
c++ - C中的函数指针-地址运算符“不必要”
在 C 中使用 qsort 我们传入一个比较函数,例如
qsort 的原型需要 aint (* )(const void* , const void*)
所以我们称之为:
但调用同样有效:
如果我们在 C++ 中传入一个静态成员函数,这就是我们必须要做的。Kernighan & Ritchie (2nd Edition, 5.11 "Pointers To Functions" p119) 指出“由于 [cmp] 已知是一个函数,因此 & 运算符不是必需的,就像在数组名称之前不需要它一样。 "
有没有其他人对此感到有点不舒服(特别是关于类型安全)?
c - 如果我的编译器对函数指针的支持被破坏,我该如何编写调度程序?
我正在开发一个嵌入式应用程序,其中设备通过命令界面进行控制。我在 VC 中模拟了命令调度程序,并让它运行得令我满意;但是当我将代码移到嵌入式环境时,我发现编译器的指针函数的实现被破坏了。
以下是我最初实现代码的方式(在 VC 中):
如果不使用函数指针,似乎我唯一的希望是使用 switch()/case 语句来调用函数。但我想避免手动维护一个大的 switch() 语句。
我想做的是将所有 COMMAND_ENTRY 行移动到一个单独的包含文件中。然后用不同的#define 和#undefines 包装包含文件。就像是:
有没有人看到更好的方法来处理这种情况?可悲的是,“获得另一个编译器”不是一个可行的选择。:(
---编辑添加:只是为了澄清,特定的嵌入式环境被破坏,因为编译器应该创建一个“函数指针表”,然后编译器使用它来通过指针解析对函数的调用。不幸的是,编译器坏了,没有生成正确的函数表。
所以我没有一个简单的方法来提取函数地址来调用它。
--- 编辑#2:啊,是的,使用 void *(set|get)_dispatcher 是我尝试查看问题是否与 func 指针的类型定义有关。本来,我有
c - 使用远函数指针
我意识到 far 是特定于编译器的,但我的期望是 far 说明符的放置对那些真正理解指针的人来说应该是有意义的。
所以,我有两个应用程序共享处理器的整个内存空间。
应用 A 需要调用应用 B 中存在的函数 foo。
我知道函数 foo 的内存位置。
所以这应该工作,在应用程序A:
- __far 在 typedef 中的正确位置吗?
- 我是否需要将 __far 添加到 (MYFP) 演员表中?
- 一些信息表明对 foo 的调用不需要取消引用,您的经验是什么?
这看起来还有什么不正确的,或者我可以尝试完成这个吗?
有一个更好的方法吗?
编辑:
这是在使用 Code Warrior 的嵌入式设备(飞思卡尔 S12XEQ 设备)上。这是一个具有 24 位内存空间的 16 位设备,所以是的,它是分段/存储的。
-亚当
python - python中的函数指针
我想做类似以下的事情:
在python中,是否可以分配函数指针之类的东西?