C-警告:指针转换不兼容的整数,从'int'分配给'void *'[-Wint-conversion] b = *(int *)a;

时间:2019-02-22 14:05:10

标签: pointers void-pointers

我是编码的新手。

实际上,我在玩并尝试使用指针,函数和void指针。

我编写了一个简单的程序来增加不同功能上的“ f”数量。

到目前为止,此代码行之有效,但我收到了该主题的警告。

在这里做什么?

此行出现警告:“ b=*(int*)a;

#include <stdio.h>

void test (int *a);
void test2 (int d);
void *stage (const void*);
void *stage2(const void*);

int main() {

    int f=0;

    //test(&e);
    //test2(e);

    if (f==0) {
        stage(&f);
        printf("\n%d",f);
    }

    if (f==1) {
        stage(&f);
        printf("\n%d",f);
    }

    if (f==2) {
        f=*(long*)stage2(&f);
        printf("\n%d",f);
    }

    if (f==3) {
        f=*(long*)stage2(&f);
        printf("\n%d",f);
    }
    return 0;
}

void test(int *a) { 
    int b=3;
    int c=2;
    *a=b+c; 
}

void test2(int d) {
    d++;
    //printf("%d",d);
}

void *stage (const void*num) {
    long nr;
    nr=(*(int*)num)++;
    return (void*)nr;
}

void *stage2(const void*a) {
    static void *b;
    b=*(int*)a;

    if (b==(int*)2)
        b+=1;
    else if (b==(int*)3)
        b+=6;

    return &b;
}

0 个答案:

没有答案