标签: function-pointers

如何在c ++中使用任何函数的typedef?

我想我想要一些不可能的东西,但至少我可以问))

我们可以输入一个函数的指针,它什么都没有,并且没有返回这样的东西.

typedef void (*fpointer)();
Run Code Online (Sandbox Code Playgroud)

如果函数得到一个int,那么

typedef void (*fpointer)(int);
Run Code Online (Sandbox Code Playgroud)

所以我想知道,我可以输入任何函数的指针吗?(非集体成员)

谢谢大家.

编辑:

    template <typename T>
    struct IsMemberFunctionPointerRaw
    {enum{result = 0};};

    template <typename T, typename S>
    struct IsMemberFunctionPointerRaw<T (S::*)()> 
    {enum {result = 1};};
Run Code Online (Sandbox Code Playgroud)

...........................................

    template <typename T, typename S, 
        typename P01, typename P02, typename P03, typename P04, typename P05,
        typename P06, typename P07, typename P08, typename P09, typename P10,
        typename P11, typename P12, typename P13, typename P14, typename P15,
        typename P16, typename P17, typename P18, typename P19, typename P20>
    struct IsMemberFunctionPointerRaw<T …
Run Code Online (Sandbox Code Playgroud)

c++ typedef member-function-pointers function-pointers c++11

0
推荐指数
1
解决办法
175
查看次数

使用C中的函数指针重新启动计算机

当我遇到一个在执行时重新启动计算机的程序时,我正在学习C语言中的函数指针.

void (*f) (void);
f=(void (*)(void) MK_FP(0xFFFF,0x0000);
f();
Run Code Online (Sandbox Code Playgroud)

(void(*)(void))部分不在提供的原始文本中,我不得不进行此添加以获取要编译的代码.这是如何运作的?

非常感谢你.

c function-pointers

0
推荐指数
1
解决办法
865
查看次数

函数指针是否在C和C++中立即返回?

假设我想用异步行为实现函数或者我只想使用函数指针,调用函数指针是否被授予导致相关函数的调用,紧接着是下一条指令?

#include <iostream>
#include <cstdint>
int triple(int a) { return a * 3; }
void foo() { std::cout << "executing foo()" << '\n'; }
using fptrT = int (*)(int);
int main()
{
    fptrT p = triple;
    p(3);
    foo();
}
Run Code Online (Sandbox Code Playgroud)

两个标准都说明了表达式p(3)得到评估时foo()会发生什么以及何时执行?

c c++ pointers asynchronous function-pointers

0
推荐指数
2
解决办法
393
查看次数

列出C/C++中所有可用的函数原型?

在C或C++程序中是否有任何方法可以获取有关可以调用的所有函数的信息?也许某种编译器宏?我知道有些程序可以接收源文件或.o文件并获取符号或原型,我想我可以在ac程序中运行这些程序,但我很好奇可能会返回函数指针或当前范围内可用的一系列函数原型,还是相关的东西?

我不是很好地说这个,但问题是我对程序内部程序的学习能力的一部分(并不一定只是阅读自己的代码).我有点怀疑有什么像我要求的东西,但我很好奇.

编辑:似乎我想知道但不知道如何描述非常好的是在C或C++中是否可以进行反射.谢谢您的回答.

c c++ function-pointers function-prototypes

0
推荐指数
1
解决办法
421
查看次数

函数指针声明在C中起作用,但在C++中起作用

所以我目前正在将一个小型C库导入到一个新的空C++项目中,但它根本无法编译.它可以很好地用C编译它,但它根本不适用于C++.我唯一要做的就是包括标题.

这似乎是一个语法错误,但它可能是其他的.这是编译器唯一唠叨的事情:

error: expected unqualified-id before 'export'
bool (*export)(struct wld_exporter * exporter, struct wld_buffer * buffer, uint32_t type, union wld_object * object);
error: expected ')' before 'export'
Run Code Online (Sandbox Code Playgroud)

因为我认为这是一个语法问题,我只是不知道该怎么做,并尝试愚蠢的事情,如在导出后移动asterix而不是之前希望它可以工作,但它显然没有.

我不知道为什么编译器无法识别它应该是一个函数指针,我在c ++中完成了函数指针c-style之前没有任何问题.

我使用gcc和C++ 11,如果这有任何区别.

c++ function-pointers c++11

0
推荐指数
1
解决办法
69
查看次数

指向函数的指针不会工作

我正在尝试学习如何使用指针正常运行.我应该在函数strcmp内部创建一个指向函数的指针check,但程序会立即打开和关闭.据我所知,函数指针在我的代码上是正确的 returnType (*pointer)(parameters)); 那么出了什么问题?提前致谢.

void check(char *a,char *b,int (*cmp)(const char*,const char*))
{
    printf("Testing equality\n");
    if(!(*cmp)(a,b)) printf("equals");
    else printf("different");
}

int main(void)
{
    char s1[80] = "daniel" ,s2[80] = "daniel";
    int (*p)(const char*,const char*);
    p = strcmp();


    check(s1,s2,p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ pointers function-pointers

0
推荐指数
1
解决办法
146
查看次数

将指针传递给函数的最佳用例

是否有充分的理由将函数的指针传递给C中的另一个函数.我没有看到函数指针的一般用例.

如果有人可以给出一些用例,其中函数的指针是实现某些特定用例的唯一方法,这将是很好的.

c pointers function-pointers

0
推荐指数
1
解决办法
121
查看次数

C++在构造函数中初始化一个非静态指针数组

我想以一种很好的方式初始化一个指针数组..有点像

handler[numberOfIndexes] = {&bla, &ble, &bli, &blo , &blu};
Run Code Online (Sandbox Code Playgroud)

但它不会这样工作.显然,我得到一个错误,因为我试图在函数的单个指针中放置一个函数指针数组:

cannot convert ‘<brace-enclosed initializer list>’ to ‘void (A::*)()’ in assignment
Run Code Online (Sandbox Code Playgroud)

那么,这是您要测试的代码:

#include <iostream>
#include <list>

using namespace std;

class A
{
    private:

    void first();
    void second();
    void third ();
    // and so on

    void(A::*handlers[4])(void);


    public:

    A();
};

void A::first()
{

}

void A::second()
{

}

void A::third()
{

}

A::A()
{
    //this is ugly
    handlers[0] = &A::first; 
    handlers[1] = &A::second;
    handlers[2] = &A::third;

    //this would be nice
    handlers[4] = {&A::first,&A::second,&A::third,0};//in …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers function-pointers

0
推荐指数
1
解决办法
514
查看次数

无法使用函数打印数组

程序不会打印数组,它只是空白.它会让我构建没有错误,但有一个警告声明:

warning C4477: 'printf' : format string '%s' requires an argument of type 'char *', but variadic argument 1 has type 'int (__cdecl *)(int)'

我想在程序中使用一个指针,这就是为什么它因为课堂章节而在里面.

#include "stdafx.h"
#define count 7

int form1(int a);
int form2(int a);
int form3(int a);
int form4(int a);
int form5(int a);
int form6(int a);
int form7(int a);

int main()
{
    //creates a pointer to the functions for the program
    int (*forms[count])(int) = { form1, form2, form3, form4, form5, form6 ,form7 };


    //prints out the array for …
Run Code Online (Sandbox Code Playgroud)

c function-pointers function

0
推荐指数
1
解决办法
323
查看次数

在Java中,如何创建一个函数指针列表,每个参数都带一个参数?

我已经看过这里,它适用于包含Runnables的参数减少方法列表.我需要Consumer在我的情况下.这是我到目前为止:

import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.function.Consumer;

public class experiment {

 private static List<Consumer<String>> activities;

 public experiment (){
 activities = ImmutableList.of(
     (userId) -> this::bar,        // throws error
     (userId) -> this::foo);
 }

 public void bar(String x) {
   System.out.println(x);
 }

 public void foo(String x) {
   System.out.println(x);
 }

 public static void main(String []args) {

  for (int i=0; i<2; i++) {
    activities.get(i).accept("activity #" + i);
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

我看到的错误是void is not a functional interface.

我不明白为什么我会这样做,barfoo …

java function-pointers

0
推荐指数
1
解决办法
415
查看次数