2017-02-14 2 views
-1

Ich habe eine Struktur wie folgt aus:Segfault wenn ich sende Strukturadresse

typedef struct s_struct 
{ 
    float x1; 
    float y1; 
    float x2; 
    float y2; 
}    t_struct; 

diese verwendet wird, einige Schlaganfall auf meinem Bildschirm zu zeichnen, aber ich habe ein kleines Problem, ich möchte meinen X-Wert ändern, wenn das Recht Pfeil gedrückt wird, aber es Segfaults, ich denke, es ist, weil ich ... nicht richtig Adresse meiner Struktur senden Dies ist, wie ich tue:

void   draw_all(t_struct *param) 
{ 
    draw_horizon(param); 
    draw_verti(param); 
} 

void  draw_horizon(t_struct *param) 
{ 

      param->x1 = param->x1 + param->C_Y; 
      param->y1 = param->y1 + param->C_X; 
      param->x2 = param->x2 + param->C_Y; 
      param->y2 = param->y2 + param->C_X; 
      param->y2 = param->y2 + param->C_X; 
      stroke(param); 
} 

Und die Funktion, die aufgerufen wird, wenn ich meinen Pfeil nach rechts drücken:

int  event(int keycode, t_struct *param) 
{ 
    if (keycode == 53) 
    { 
     printf("exit succes.\n"); 
     exit(1); 
    } 
    if (keycode == 124) 
    { 
     printf("====\n"); 
     printf("PRE C_X = %f\n", param->C_X); 
     param->C_X = param->C_X + 1; 
     printf("POST C_X = %f\n", param->C_X); 
     draw_all(&param); 
    } 
    return (0); 
} 

Meine Funktion draw_verti die gleiche ist, aber für Verticals Schlaganfall ... Die segfault ist, weil ich eine Kopie meiner Struktur haben und ich es nicht geschafft, die Adresse zu senden ... Vielen Dank!

+0

Was ist 't_fdf'? – Marievi

+3

Ja, und viel mehr von Ihrem Code (relevant für diese Frage) fehlt auch! –

+0

Falscher Name sorry ... – Aornn

Antwort

4

In der event Funktion ist die Variable param ein Zeiger. Wenn Sie &param tun, erhalten Sie einen Zeiger auf den Zeiger, der vom Typ t_struct ** ist. Dies ist nicht, was die draw_all Funktion erwartet.

Ihr Compiler sollte sich darüber beschweren, Wenn Sie hatten richtige Prototypen.

+0

ho ja ... i habe diesen Fehler nicht gesehen, danke – Aornn