Struct Problem (Modul)



  • Hi,
    ich habe mal versucht was mit structs zu bauen,
    folgendes ist dabei herausgekommen:

    vector.h

    #ifndef VECTOR_H_INCLUDED
    #define VECTOR_H_INCLUDED
    
    struct VECTOR {
    
        float x;
        float y;
        float z;
    
    };
    
    struct VECTOR vector_addition (struct VECTOR vec0, struct VECTOR vec1) {
    
        struct VECTOR neu;
        neu.x = vec0.x + vec1.x
        neu.y = vec0.y + vec1.y
        neu.z = vec0.z + vec1.z
        return neu;
    
    }
    
    #endif // VECTOR_H_INCLUDED
    

    vector_test.c

    #include <stdio.h>
    #include "vector.h"
    
    int main (void) {
    
        struct VECTOR v0, v1;
    
        v0.x = 10;
        v0.y = 2;
        v0.z = 4;
    
        v1.x = 7;
        v1.y = 3;
        v1.z = 11;
    
        vector_addition(v0,v1);
    
        return 0;
    
    }
    

    Beim Kompilieren und Starten von "vector_test.c" bekomme
    ich immer folgenden Fehler in "vector.h":

    In function 'vector_addition':
    error: syntax error before "neu"
    

    Irgendwie versteh ich es nicht.. 😕
    Bitte alles auffällige auch gern bezüglich Schreibstil,
    Codeaufbau ich will es ja lernen 😃

    MfG Jonas 😃



  • Da fehlen die Semikolons am Zeilenende.



  • Tut mir leid....
    Ist mir echt peinlich so ein dämlicher Fehler.
    Aber das war das Problem, also vielen Dank 😉

    MfG Jonas 😃



  • talas schrieb:

    Tut mir leid...

    Muß es nicht, die Frage war verständlich gestellt, Codetags wurden benutzt. 👍
    Noch'n Tip, benutze typedef, also so:

    typedef struct _vector_ {
    
        float x;
        float y;
        float z;
    
    } VECTOR;
    
    VECTOR vector_addition ( VECTOR vec0,  VECTOR vec1) { 
    // ...
    // auch in der Main anpassen!
    

    ... weniger Tipparbeit und übersichtlicher. 😃



  • Hi,

    @Pointercrash():
    Danke für den Tip funktioniert supi und kannte ich noch nicht 😃

    @all:
    Nur so eine Frage am Rande, ist das "reines" C oder ist das irgendwas
    spezifisches?

    MfG Jonas 😃



  • talas schrieb:

    @all:Nur so eine Frage am Rande, ist das "reines" C oder ist das irgendwas spezifisches?

    Keine Sorge, pures C ohne Verunreinigungen, sollte immer funktionieren. 😉



  • pointercrash() schrieb:

    Noch'n Tip, benutze typedef, also so:

    typedef struct _vector_ {
    
        float x;
        float y;
        float z;
    
    } VECTOR;
    

    Es tut übrigens nicht weh, wenn die Struktur genauso heißt wie der typedef. Irgendwelche Verkrampfungen wie angehängte Unterstriche, Präfixe oder Suffixe kann man sich sparen.



  • Bashar schrieb:

    Es tut übrigens nicht weh, wenn die Struktur genauso heißt wie der typedef. Irgendwelche Verkrampfungen wie angehängte Unterstriche, Präfixe oder Suffixe kann man sich sparen.

    Dem Compiler vielleicht nicht, aber meinem Auge. If it hurts, don't do it.



  • Es tut deinem Auge gut, wenn da Bezeichner mit unnützen Unterstrichen rumfliegen, die niemand braucht? Vielleicht programmierst du schon zu lange C 🙂



  • Also ich persönlich würde einen Typ nicht in Großbuchstaben schreiben, die sind für Macros. Sondern

    typedef struct vector {
        float x;
        float y;
        float z;
    } vector_t;
    

    Aber über solche Stilfragen kann man sich streiten.



  • Bashar schrieb:

    Es tut deinem Auge gut, wenn da Bezeichner mit unnützen Unterstrichen rumfliegen, die niemand braucht? Vielleicht programmierst du schon zu lange C 🙂

    Naja, das eine ist die formale Deklaration der Struct, das Andere die Anlage des Typenbezeichners, ich finde es jedenfalls nicht schlecht, das auch optisch zu _unterstreichen_ 😉

    namespace invader schrieb:

    Also ich persönlich würde einen Typ nicht in Großbuchstaben schreiben, die sind für Macros.

    Stimme Dir zu, entspricht den meisten Hausregeln für Codegestaltung. 🙂


Anmelden zum Antworten