gpt4 book ai didi

c - 我想在全局变量中保存指向函数的指针

转载 作者:行者123 更新时间:2023-12-04 06:40:52 24 4
gpt4 key购买 nike

所以我认为这很简单,但我不断收到编译错误,这可能意味着我在做一些愚蠢的事情。

所以我正在使用 C,我想在全局变量中保存一个指向函数的指针。

作为测试用例,我有三个文件。 Test.c、Test.h 和 FunctionPtr.c

Test.h 是这样的

void (*MyCallBack)(void);

int SetFunc( void (*CallBackArg)(void));
void CallFunc();

Test.c 是这样的

#include <stdio.h>
#include <stdlib.h>
#include "test.h"
void SetFunc( void (*CallBackArg)(void)){

printf("Set CallBack\n");
MyCallBack=CallBackArg;
}

void CallFunc(){
printf("In Call Func\n");
MyCallBack();
}

FunctionTest.c 是这样的

#include <stdio.h>
#include <stdlib.h>
#include "test.h"


void MyFunc(){
printf("Work!\n");
}
int main()
{
SetFunc(MyFunc);
CallFunc();

}

当我使用 gcc FunctionTest.c test.c test.h -o FunctionTest 编译时

我收到以下错误...

test.c:4: 错误:“SetFunc”的类型冲突test.h:4: 注意:之前的“SetFunc”声明在这里

我不知道我做错了什么?也许我没有声明全局指针对吗?

最佳答案

int SetFunc( void (*CallBackArg)(void));

void SetFunc( void (*CallBackArg)(void))

返回类型不同,那是你的问题。您必须在 header 中以与 .c 文件中相同的方式声明它。

关于c - 我想在全局变量中保存指向函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4249942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com