Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler: in Konflikt stehende Typen für »vektor«
Hallo
ich schreibe da ein Programm wofür ich ein Paar structs bräuchte...
aber eine header-Datei lässt sich beim besten willen nicht kompellieren.
#include <stdio.h>
#include <stdlib.h>
typedef struct {
double x;
double y;
double z;
}vektor;
wenn ich dann mein Programm kompeliere kommt diese Fehler Meldung
myvektor.h:13: Fehler: in Konflikt stehende Typen für »vektor«
myvektor.h:13: Fehler: vorherige Deklaration von »vektor« war hier
ich weiss einfach nicht mehr weiter für hilfe wie immer dankbar
mfg
gsus
peschmae
31-12-2005, 19:21
Was soll der Code denn genau?
MfG Peschmä
Hallo danke fürs lesen und antworten
naja er soll einen Vektor mit x,y,z machen also einen Vektor im Euklidischen VektorRaum
mfg
Gsus
und welches ist die zeile 13 im header file???
gruesse und ein gutes Neues Jahr
sorry habe die kommentare weggelassen, es ist die letzte, aber es hat sich glaube ich erledigt, wenn ich die headerfile in einem anderen Programm mit einfüge compeliert er es mir (der fehler muss wo anders liegen).
ich hätte aber eine andere frage kann ich struct als return wert defieneren wenn ich es mache (es ist das struct oben) sagt er mir inkompatible Typen ?? wenn nicht muss ich es halt callbyrefernz machen aber mit callbyvalue würde ich mich wohler fühlen
danke für die antworten
mfg gsus
peschmae
01-01-2006, 22:23
Klar kannst du so ein Struct als Return-Value verwenden. Einfach so halt wie bei allem anderen auch.
Wenn was nicht geht wärs noch gut wenn du (kompilierfähigen) Code mit dem Problem posten könntest...
MfG Peschmä
Hallo
hier der naja nicht compelierbare Code wegen Fehlern ;)
vektor.h
#include <stdio.h>
#include <stdlib.h>
typedef struct vektor{
double x;
double y;
double z;
}vektor;
vektorMath.c
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "vektor.h"
vektor addVek(vektor,vektor);
vektor mulVek(double, vektor);
vektor addVek(vektor A, vektor B)
{
vektor C;
C.x = A.x + B.x;
C.y = A.y + B.y;
C.z = A.z + B.z;
return C;
}
vektor mulVek(double a, vektor B){
vektor C;
C.x = a*B.x;
C.y = a*B.y;
C.z = a*B.z;
return C;
}
main.c
#include <stdlib.h>
#include <stdio.h>
#include "vektor.h"
int main (){
vektor V;
V.x=1.0;
V.y=2.0;
V.z=3.0;
vektor R;
R.x = 1.0;
R.y = 2.0;
R.z = 3.0;
vektor Z;
Z = addVek(R,V);
}
und wenn ich so dann compeliere:
gcc -o main main.c vektorMath.c -lm
so folgt:
main.c: In function 'main':
main.c:19: Fehler: inkompatiple Typen in Zuweisung
wobei Zeile 19: Z=addVek(....
ist
mfg Gsus
PS: Das Problem zu Anfang habe ich auch noch nicht hinbekommen aber denn Code kann ich nicht hinzufügen ... Weil zu viel da hängt noch sehr viel OpenGL mit dran..
typedef struct vektor{
double x;
double y;
double z;
}vektor;Ich habe nie verstanden wofür der Bezeichner "vektor" nach einem "typedef struct" gut sein soll. Eigentlich sollte ein
typedef struct {
double x;
double y;
double z;
}vektor;reichen.
[Hier stand vor der Änderung ein Satz, der so blöd war, weil ich mit Blindheit geschlagen war, dass er einfach weg musste.]
peschmae
03-01-2006, 09:54
Wenn du main.c mit der Option -Wall kompilierst wirts schon klarer:
peschmae@sid:/tmp$ gcc -Wall -c main.c -o main.o
main.c: In Funktion »main«:
main.c:18: Warnung: implizite Deklaration der Funktion »addVek«
main.c:18: Fehler: inkompatible Typen in Zuweisung
main.c:19: Warnung: Kontrollfluss erreicht Ende einer Nicht-void-Funktion
d.h. du musst natürlich die Funktionen die du in vectorMath.c definierst auch in vektor.h deklarieren sonst kennt der die in main nicht.
danke das hat alles gelöst
der andere Fehler wurde dadurch auch klar, ich musste erst das struct definieren und dann die funktionen ;)
danke
mfg
gsus
Hallo
so da ich zwar jetzt alles compelieren kann aber immer noch nicht (vielleicht nie ) fertig bin wollte ich wenigstens mal zeigen woran ich arbeite... tada
es compeliert ( naja wenn man Opengl und glut drauf hat ) mit make und es ist von mir :D
falls jemand verbesserungs vorschläge hat bitte her damit. Die zwei Planeten
in der mitte haben eigentlich auch eine Texture aber die konnte ich wegen der beschränkten datei größe jetzt nich mit anhängen ( ausserdem hat mein ibook unter linux keine 3dBeschleunigung weshalb ich es ausgeschaltet habe )
mfg gsus
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.