警告:从指针强制转换为不同大小的整数[-Wpointer-to-int-cast]

时间:2014-02-19 17:32:29

标签: c pointers integer warnings

这是我的程序(vars是德语)

    int ABFRAGE(int max,int min){
    int eingabe;
        do {
            printf("\t>");
            scanf("%i",&eingabe);
        } while (eingabe > max || eingabe < min);
        return eingabe;
    }

    #define ABFRAGEERGEBNIS Abfrageergebnis = (int)ABFRAGE
int main(void);
   int Abfrageergebnis;
        ABFRAGEERGEBNIS; <-!
        if (Abfrageergebnis == 2)
        NAMENSAENDERUNG(i,Name);
        if (Abfrageergebnis == 1)
    getchar();
        STRING_PROLOG;

它应该得到一个数字保存并执行此操作,if部分说什么。但在&lt; - !是警告

2 个答案:

答案 0 :(得分:0)

我认为,使用您当前的代码,您将内存地址读入int,这不是您想要做的。我建议你制作第二行代码int *eingabe;

编辑:我完全错了。我认为错误在于:#define ABFRAGEERGEBNIS Abfrageergebnis = (int)ABFRAGE。您正在调用函数ABFRAGE但未指定参数max和min。你也不需要(int)。

ABFRAGE功能很好 - 你只需要将我提到的行更改为#define ABFRAGEERGEBNIS Abfrageergebnis = ABFRAGE(max, min)。你还需要定义max和min,这是我在测试时用main做的。

答案 1 :(得分:0)

那个宏太可怕了,你为什么要用它?

此:

#define ABFRAGEERGEBNIS Abfrageergebnis = (int)ABFRAGE

ABFRAGEERGEBNIS; <-!

将扩展为

Abfrageergebnis = (int) ABFRAGE;

换句话说,您将 ABFRAGE函数的地址分配给int变量Abfrageergebnis

杀死宏,然后执行:

Abfrageergebnis = ABFRAGE();

对该功能进行正确的调用