c++ - 存储函数指针供以后使用

标签 c++ embedded function-pointers

我试图找到这个问题的答案,但没有找到任何有效的方法。我正在尝试创建一类静态方法,以便我可以将函数指针传递给 SPI::transmitData()我以后可以用 SPI::call() 打电话.但是,我收到一个错误:

unresolved symbol SPI::mycallback, first referenced in ./spi.obj

spi.h:

#ifndef SPI_H_
#define SPI_H_

#include "msp430g2553.h"

class SPI {
public:
    typedef void (*foo)(void);
    static foo mycallback;

    static void transmitData(unsigned char data, foo callback);
    static void call();
};

#endif /* SPI_H_ */

spi.cpp:

#include "spi.h"

void SPI::transmitData(unsigned char data, foo callback) {
    mycallback = callback; // causes error
    UCA0TXBUF = data;
}

void SPI::call() {
    //SPI::mycallback();
}

我一直在尝试摆弄它,当我评论我标记的行时错误消失了。不确定发生了什么。

最佳答案

使用前需要实例化静态成员:

在spi.cpp中

SPI::foo SPI::mycallback = NULL;

关于c++ - 存储函数指针供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17100358/

相关文章:

C++ 按值数字排序映射,键按字母顺序排序

c++ - MariaDB,在c++程序中执行存储过程时出现语法错误

c++ - 编译用于高放射性环境的应用程序

c++ - with -lpthread,g++编译器错误, "undefined reference to "信号量调用如 `sem_open'

c++ - 为什么 numeric_limits<atomic<X>> 不会编译失败?

c++ - C 编程通过每次 8 位输入将 64 位值存储在寄存器中

Lua 共存于裸机嵌入式 c 应用程序中

c - 使用函数指针

c - 使用通用函数指针

c - 如何分配函数指针?