首页 文章
  • 10 votes
     answers
     views

    C函数类型模板参数推导规则

    使用时构建以下代码 clang -Wall main.cpp -o main.o 生成以下诊断(在代码之后): template <typename F> void fun(const F& f) { } template <typename F> void fun(F f) { } double Test(double d) { return d; } ...
  • 297 votes
     answers
     views

    什么是Java中函数指针的最接近的替代品?

    我有一个大约十行代码的方法 . 我想创建更多完全相同的方法,除了一个会改变一行代码的小计算 . 这是传递函数指针以替换该行的完美应用程序,但Java没有函数指针 . 什么是我最好的选择?
  • 1 votes
     answers
     views

    [expr.reinterpret.cast] / 6中以下注释的含义是什么?

    [expr.reinterpret.cast]/6: 函数指针可以显式转换为不同类型的函数指针 . [注意:通过指向函数类型([dcl.fct])的指针调用函数的效果与函数定义中使用的类型不同是未定义的 . - 结束注释]除了将“指向T1的指针”类型的prvalue转换为“指向T2的指针”类型(其中T1和T2是函数类型)并返回其原始类型,产生原始指针值,这样的结果指针转换未指定 . [注意...
  • 236 votes
     answers
     views

    “解包”一个元组来调用匹配的函数指针

    我试图在_363229中存储不同数量的值,这些值稍后将用作调用与存储类型匹配的函数指针的参数 . 我创建了一个简化的示例,显示了我正在努力解决的问题: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":...
  • 1047 votes
     answers
     views

    C中的函数指针如何工作?

    我最近在C中使用了函数指针 . 继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结 .
  • 9 votes
     answers
     views

    如何定义一般成员函数指针

    我创建了一个Timer类,当计时器到期时必须调用一个回调方法 . 目前我使用普通函数指针(它们被声明为void(*)(void),当Elapsed事件发生时,调用函数指针 . 是否可以使用也具有签名void(AnyClass :: *)(void)的成员函数执行相同的操作? 谢谢你的队友 . 编辑:此代码必须在Windows上以及在实时操作系统(VxWorks)上运行,因此不使用外部库会很棒 . ...
  • 9 votes
     answers
     views

    static constexpr指向函数的指针,编译器之间的区别

    在回答this question时,我使用gcc(code compiled)和clang(code rejected)尝试了以下代码: typedef long (*func)(int); long function(int) { return 42; } struct Test { static constexpr func f = &function; }; templ...
  • 0 votes
     answers
     views

    打印指向的对象

    我尝试从我的对象类打印值,但我无法正确访问存储在指针中的信息 . 下面我定义了一个简单的结构 . 编译时,我收到一个错误: 'operator <<'不匹配(操作数类型为'std :: ostream {aka std :: basic_ostream <char>}'和'std :: vector <int>')void PrintNode(Node * n...
  • -1 votes
     answers
     views

    我应该用指向结构的指针还是仅仅在结构上定义我的func?

    在我看来,我似乎有两个选择: foo := Thing{} foo.bar() foo := &Thing{} foo.bar() func (self Thing) bar() { } func (self *Thing) bar() { } 用自己的东西或自我*事物来定义我的函数的更好的方法是什么? 编辑:这不是关于方法和函数的问题的重复 . 这个问题与Thing和&Thin...
  • 3 votes
     answers
     views

    Delphi:使用指针功能

    我是delphi的新手,我的程序在delphi中开发,使用C开发的dll,我需要使用指针函数来抛出Access Violation地址的异常,经过多次测试我不知道如何解决它 . 这是delphi中指针函数的定义,它从头c开始转换 type TMICRCallback = function: Integer of Object; stdcall; TStatusCallback = f...
  • 4 votes
     answers
     views

    调用函数并传递存储在元组中的参数?

    我想要一个类Foo来存储一个函数指针,它在构造时得到,并在某个时候调用这个函数 . 我看了这两个问题寻求帮助: Pass tuple's content as variadic function arguments How do I expand a tuple into variadic template function's arguments? 并且,根据答案,提出了这个代码: ...
  • 7 votes
     answers
     views

    成员函数的std :: async调用

    考虑以下课程: class Foo { private: void bar(const size_t); public: void foo(); }; 现在 Foo::foo() 应该启动执行 bar 的线程,所以这就是它的实现方式: void Foo:foo() { auto handle = std::async(std::launch::asyn...
  • 6 votes
     answers
     views

    使用far函数指针

    我意识到远远不是编译器特定的,但我的期望是far说明符的位置应该对那些真正理解指针的人有意义 . 所以,我有两个共享处理器整个内存空间的应用程序 . App A需要调用应用程序B中存在的函数foo . 我知道函数foo的内存位置 . 所以这应该适用于应用程序A: typedef int (* __far MYFP)(int input); void somefunc(void) { int...
  • 7 votes
     answers
     views

    指向任何功能?

    如何声明一个可以安全指向任何函数的函数指针? 我需要类似 void 指针的东西,但是对于函数来说 . 我想过简单地使用它,但根据this question的答案,函数指针无法可靠地转换为数据指针,至少在非POSIX系统上 . 我搜索并找到了一些可能的例子: Windows有FARPROC: int (FAR WINAPI * FARPROC) () 文档还提到了这一点: 在C中,FARPR...
  • 2 votes
     answers
     views

    C中的函数指针语法

    我正在学习C,特别是函数指针,我想我理解基础知识 . 但是,这种语法让我感到困惑,我不知道如何阅读这个 . 我通过cdecl运行它并尝试一遍又一遍地阅读它,但我不知道如何处理它 . char (* ( *f())[])(); 我已经尝试编译它,它的工作原理 . 我意识到这里有一个指向函数的指针,并且它本身返回一个函数指针 - 但是,我不知道如何真正读取它 . 我去open-std检查规范,但无法...
  • 3 votes
     answers
     views

    将函数定义为函数指针

    主要是为了好玩,我决定为我的C代码编写自己的最小测试框架 . 我使用基本 struct 作为测试信息,创建一个测试数组 struct 然后迭代它们以运行所有测试 . 对于相当优雅(imho)的解决方案而言,这相当于非常少量的工作 . 然而,有点恼人的一件事是我无法弄清楚如何将函数定义为函数指针而不是定义函数,然后再创建函数指针 . 我有以下(工作得很好): typedef int (* test_...
  • 2 votes
     answers
     views

    函数指针如何替换switch语句?

    我正在阅读这个关于函数指针的教程,它说函数指针可以替换switch语句http://www.newty.de/fpt/intro.html . 任何人都可以澄清吗? 我们有一个这样的switch语句: // The four arithmetic operations ... one of these functions is selected // at runtime with a swict...
  • 1 votes
     answers
     views

    将指向char数组的指针传递给函数

    我有一个指向我的char数组的指针 . unsigned char *recvBuf; recvBuf = (unsigned char *)malloc(sizeof(char)*RECVBUF); 然后我将它传递给定义为的函数 void setHeader(MyHeader *myHeader, unsigned char *buffer) 它将前12个字节复制到结构中 然后我尝试...
  • 3 votes
     answers
     views

    是否可以在C中增加函数指针

    我有以下代码,我得到分段错误,因为我的函数指针指向一个函数指针数组,并且在函数指针的增量未指向函数指针数组中的下一个元素之后 . int f2(int); int f1(int); int(*fp[2])(int) = {f1,f2}; int f1(int x) { return (x+10); } int f2(int y) { return (y+20); } int main() ...
  • 3 votes
     answers
     views

    对于C,XCode错误“架构x86_64的未定义符号”

    我一直在尝试编写一个冒泡排序程序,用户输入数组大小,然后计算机为所有数组的值生成随机数 . 之后,程序询问用户是否希望以升序或降序对数组进行排序 . 之后,它会通过冒泡排序 . 我收到错误: 体系结构x86_64的未定义符号:“ArraySorter(int,int)”,引用自:main.o中的_main ld:未找到体系结构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使...
  • 0 votes
     answers
     views

    使用Pointer arithemtic将数据从第1个数组复制到第2个数组

    我正在学习C,我遇到了这个问题我无法理解 . 编写一个函数来计算整数数组的元素 a 加上6模数10并将结果存储在数组 b 中 . 例如,如果5是数组 a 的第二个元素,那么数组 b 的第二个元素应为 (5+6)%10 ,即1.该函数具有以下原型, n 是数组的长度, a 和 b 是整数数组 . 我做了: void arithmetic (int *a, int n, int *b) ...
  • 6 votes
     answers
     views

    C将参数作为void-pointer-list传递给LoadLibrary()中的导入函数

    我遇到的问题是我想创建一个通用命令行应用程序,可用于加载库DLL,然后调用库DLL中的函数 . 函数名称在命令行中指定,参数也在实用程序命令行中提供 . 我可以使用 LoadLibrary() 函数从动态加载的DLL访问外部函数 . 加载库后,我可以使用_570585获取指向函数的指针 . 我想用命令行中指定的参数调用该函数 . 我可以将一个void-pointer-list传递给 LoadLib...
  • 0 votes
     answers
     views

    指向函数的指针数组的指针,该函数接受int参数并返回void

    我写的代码有效吗?我试图写一个表达式,它是一个指向函数指针数组的指针,它接受一个参数int并返回void . 所以函数有返回类型void . 但我不确定 (**[]) 的表达式是否有效或者我应该将其写为 (*(*[])) ?因为后者意味着指向函数的指针数组,该函数是指向函数的指针 . void(*(*[])(int));
  • 0 votes
     answers
     views

    参考水平第2部分

    Expanding on this question,看起来我没有提供足够的细节 . 我有一个名为 CallbackObject 的对象,它被设计为包含一个对象实例,以及要调用的函数的信息,以及在调用时传递的参数 . template <typename objectType, typename memberFunctionPtrType, typen...
  • 196 votes
     answers
     views

    理解C中函数指针的typedef

    当我读到其他人的代码时,我总是有点难过,这些代码的typedef用于指向带参数的函数的指针 . 我记得在尝试理解用C语言编写的数值算法时,我花了一些时间来解决这个定义 . 那么,您是否可以分享您关于如何编写好的typedef指向函数(Do和Do)的提示和想法,为什么它们有用以及如何理解其他人的工作?谢谢!
  • 233 votes
     answers
     views

    c中的回调函数

    在c中,何时以及如何使用回调函数? EDIT:我想看一个编写回调函数的简单示例 .
  • 27 votes
     answers
     views

    如何在可变参数模板类中获取函数指针的参数类型?

    这是对此问题的跟进:Generic functor for functions with any argument list 我有这个仿函数类(完整代码见上面的链接): template<typename... ARGS> class Foo { std::function<void(ARGS...)> m_f; public: Foo( std::fu...
  • 2 votes
     answers
     views

    重载指向重载函数的指针

    如果我尝试定义指向重载函数的指针 void myprint(int ); void myprint(const char* ); void (*funpointer)(int) = myprint; 编译器理解 funpointer 应指向与其参数匹配的 myprint 版本 . 相反,我也希望 funpointer 过载 .我试过简单地添加几行 void myprint(int ); void...
  • 1 votes
     answers
     views

    函数指针返回错误(void *)

    我收到一个编译错误,指出“'foo'声明为函数返回一个函数”,因为我的程序中有一行: typedef void * (* foo)(void *)(int); 其中foo是一个函数指针,该函数指向一个带有(void *)类型和int的函数,并返回一个(void *)类型 . 据我了解,上面的声明不是返回一个函数,而是一个指针 . 在这种情况下使用typedef的问题是什么?这个函数指针和我一直在...
  • 2 votes
     answers
     views

    将指向函数的指针转换为指向函数类型的不同指针的结果

    (5.2.10 / 6)C 03指向函数的指针可以显式转换为指向不同类型函数的指针 . 通过指向函数类型(8.3.5)的函数调用函数的效果是未定义的,该函数类型与函数定义中使用的类型不同 . 除了将“指向T1的指针”的rvalue转换为“指向T2的指针”类型(其中T1和T2是函数类型)并返回其原始类型产生原始指针值之外,这种指针转换的结果未指定 . [注意:有关指针转换的更多详细信息,请参见4...

热门问题