Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

25.06.2010, 15:28

Steht die Deklaration von RAYcolor_t in einem separaten Header? Wenn ja check mal ob du da nicht irgendwie ein zirkuläres include drin hast das von einem include guard abgebrochen wird.

Was ist eigentlich der Grund warum du das in reinem C machen willst?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

22

25.06.2010, 20:40

Ja, ich habe das typdef in einem separatem Header. Macht man das mit dem GUARD Marko nur in C++?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

23

25.06.2010, 20:51

Nein aber wenn du ein zirkuläres include hast dann kann folgendes passieren:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// A.h

#ifndef A_INCLUDED
#define A_INCLUDED

#include "B.h"

typedef X;

#endif


// B.h

#include "A.h"

X  <- error


Warum? Überleg mal was da genau passiert. A inkludiert B bevor X definiert wird. B inkludiert wiederum A weil es ja X benötigt. Allerdings schlägt jetzt der Includeguard an weil A ja schon inkludiert wurde, die Definition von X wird ausgelassen, fehlt damit in B.h und Bumm.

Includeguards schützen zwar vor Mehrfachdefinitionen sind aber kein Freibrief um einfach ohne zu überlegen immer gleich alles was man so brauchen könnte überall zu inkludieren ;)

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

24

25.06.2010, 21:07

Mh, nein daran kann's nicht liegen. Bei folgender Datei schlägt er nämlich erst bei dem zweiten "const RAYfloat" an:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
RAYINLINE void rayProject3Dto2D(RAYfloat* v)
{
    const RAYfloat z = v[2]; // KEIN FEHLER
    
    rayMultMatrix4f(rayRenderMatrix[RAY_PROJECTION_MATRIX].m, v);
    
    const RAYfloat invw = 1.0f / v[3]; // FEHLER HIER (error C2143: Syntaxfehler: Es fehlt ';' vor 'const')
    
    v[0] = invw * ( v[0] * rayRenderMatrix[RAY_VIEWPORT_MATRIX].m[0] + v[3] * rayRenderMatrix[RAY_VIEWPORT_MATRIX].m[12] );
    v[1] = invw * ( v[1] * rayRenderMatrix[RAY_VIEWPORT_MATRIX].m[5] + v[3] * rayRenderMatrix[RAY_VIEWPORT_MATRIX].m[13] );
    v[2] = z;
}

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

25

25.06.2010, 21:13

Zitat

In einem C-Programm müssen Variablen am Anfang der Funktion deklariert werden. Nachdem die Funktion nicht-Deklaration-Anweisungen ausgeführt hat, können die Variablen nicht deklariert werden.


quelle
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

26

25.06.2010, 21:26

Danke, das hilft schon mal =)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

27

25.06.2010, 21:31

Was ist eigentlich der Grund warum du das in reinem C machen willst?


würd ich auch gern wissen^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

28

25.06.2010, 21:46

Weil ich für nen SoftwareRenderer die maximale Geschwindigkeit brauche.
Aber vielleicht schriebe ich den irgendwann doch noch mal auf C++ um. Ich hab inzwischen auch gelernt, dass darauf an kommt, gute Algorithmen zu verwenden als zu versuchen, mit reinem C noch das letzte Byte and Geschwindigkeit herauszuholen ^^.
Aber dafür hab ich jetzt mal gelernt, was es heitßt ein Programm Teil in reinem C zu schreiben.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

29

25.06.2010, 22:40

Dass C sehr viel schneller ist wie C++ glaube ich ehrlich gesagt kaum, dazu solltest du dann in Assembler programmieren (oder auch C++ mit inline Assemblercode). Mit optimalen Algorithmen und einem opimalen Aufbau sparst du - wie du selbst erkannt hast - wohl mehr Takte.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

30

25.06.2010, 22:44

sieht c++ code der nur c features nutzt als assemblercode nicht genau so wie c code aus?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige