标题: C语言小白函数指针问题assignment from incompatible pointer type [-Wincompatibl... [打印本页]

作者: hxdby    时间: 2022-4-10 18:09
标题: C语言小白函数指针问题assignment from incompatible pointer type [-Wincompatibl...
一直对C语言指针比较陌生,最近在开始了解指针,写了个简单代码(不实现任何功能,纯粹是测试指针用法)想测试下自己写的对不对,但是编译后,错误是没有,但总是有警告。
虽然没有错误,但本着追求完美的宗旨,总是想搞清楚警告的原因,但找来找去,没发现两者指针类型不同啊,不都是unsigned short吗?

对指针实在是了解不多,望大神指点,如下是代码:

#include <atmel_start.h>

unsigned short adcacq0(int); //函数声明
unsigned short adcacq1(int); //函数声明
unsigned short (*adcacq)(int)=adcacq1; //函数指针变量声明,同时赋初值
unsigned short adcacq2(unsigned short(*adcacq)(int),int);  //函数声明,函数指针传递参数


int main(void)
{
        
        while (1)
        {
                adcacq2(adcacq0,9);
                adcacq2(adcacq1,8);               
        }
}



unsigned short adcacq2(unsigned short(*adcacq)(int),int x) //此函数里的代码总是有警告
{
        unsigned short *Q=0, a=1;
        Q=adcacq;
        return (*Q+a);
}

unsigned short adcacq0(int acq)
{
        int a=0,b=0,c=0;
        a=b+c;
        return a;
}

unsigned short adcacq1(int swc)
{
        int d=0,e=0,f=0;
        d=e+f;
        return d;
}



编译后没有错误,但总是有警告消不掉:
assignment from incompatible pointer type [-Wincompatible-pointer-types],看了半天也没看出来哪里类型不兼容?

作者: Hephaestus    时间: 2022-4-10 18:54
报错会提示是哪一行,藏着遮着不让大家看几个意思?
作者: 田贺    时间: 2022-4-10 22:21

把函数指针赋值给unsigned short指针了
作者: DoneDone    时间: 2022-4-10 23:18
Hephaestus 发表于 2022-4-10 18:54
报错会提示是哪一行,藏着遮着不让大家看几个意思?

估计是来考验大家的。下图的提示信息说的再明白不过了……
作者: hxdby    时间: 2022-4-11 15:59
田贺 发表于 2022-4-10 22:21
把函数指针赋值给unsigned short指针了

谢谢,我太小白了,函数指针只能指向函数的入口地址,只能指向类型相同的函数,不能赋值给类型相同的普通变量
作者: 天ノ忆    时间: 2022-4-11 16:30
田贺 发表于 2022-4-10 22:21
把函数指针赋值给unsigned short指针了

盲猜这是VSCode
作者: yzwzfyz    时间: 2022-4-12 09:03
凡是对指针搞不定的,基根本原因的:
1、对CPU中存储器的架构不清楚
2、对数据的存储格式也不清楚
3、对数据的访问方式不清楚
建议:先弄清楚以上三点!
作者: hxdby    时间: 2022-4-13 23:25
yzwzfyz 发表于 2022-4-12 09:03
凡是对指针搞不定的,基根本原因的:
1、对CPU中存储器的架构不清楚
2、对数据的存储格式也不清楚

谢谢指点,目前处于指针学习的初级阶段,确实很多不懂,感谢指明方向




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1