C - предупреждение: несовместимое целочисленное преобразование указателя, присваивающее 'void *' из 'int' [-Wint-преобразование] b = * (int *) a; - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в кодировании.

На самом деле я играю и экспериментирую с указателями, функциями и пустыми указателями.

Я написал простую программу для увеличения количества "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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...