Funktionspointer - Risiken und Nebenwirkungen?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

ComNik

Betreff: Funktionspointer - Risiken und Nebenwirkungen?

BeitragDo, Nov 26, 2009 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend,

Letztens bin ich im Gespräch mit Coolo auf Funktionspointer gekommen. Mit mystischen Formulierungen warnte er mich vor Stack Fehlern und Memory Exceptions.

Er hat mich auf jedenfall ziemlich verunsichert (was ich ihm durchaus nicht böse nehme, klang alles sinnvoll).

Ich würd also gern Meinungen von Leuten kriegen die erfahren im Umgang mit Funktionspointern sind.
Hauptsächlich die "Nebenwirkungen" würden mich interressieren.

Vielen Dank,
ComNik
WIP: Vorx.Engine
 

Ava

Gast

BeitragDo, Nov 26, 2009 22:27
Antworten mit Zitat
Also wenn Du unter Funktionspointer so etwas verstehst

BlitzMax: [AUSKLAPPEN]

Global Funze:Int ( x:Int ) = MeineFunze

Function MeineFunze:Int ( x:Int )
' blah
EndFunction


dann kann ich Dir garantieren, dass das super einwandfrei funktioniert und bei mir noch niemals zu irgendwelchen Problemen geführt hat - und ich mache davon SEHR ausgiebig Gebrauch. Wink

Falls Du jedoch etwas anderes meinst, dann könnte das durchaus problematisch sein. ^^

ComNik

BeitragDo, Nov 26, 2009 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein exakt so mein ich das Smile

Super das ist doch schonmal ein guter Anfang, dann mach ich genauso weiter wie bis jetzt...*g*

Vielen Dank Smile
ComNik
WIP: Vorx.Engine

coolo

BeitragFr, Nov 27, 2009 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@ComNik: Ich hab gemeint, wenn man falsche Parametertypen/Parameteranzahl übergibt können undefinierte Dinge passieren.

Wenn man alles richtig macht, passiert nichts Unerwartetes.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

BladeRunner

Moderator

BeitragFr, Nov 27, 2009 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann beschwert sich BMax, Coolo. Es wird also einfach einen Fehler und einen Abbruch geben, wie bei jedem Syntaxfehler.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Noobody

BeitragFr, Nov 27, 2009 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Man muss aber höllisch aufpassen, wenn man Funktionszeiger zu Byte Ptr und zurück castet BlitzMax: [AUSKLAPPEN]
Local Referenz1:Int  ( A:Int, B:Int ) = Add
Local Referenz2:Float( A:Int, B:Int, C:Int ) = Byte Ptr Add

Print Referenz1( 3, 4 )
Print Referenz2( 3, 4, 5 )

Function Add:Int( A:Int, B:Int )
Return A + B
End Function

So kann man nämlich Rückgabetyp, Parametertypen und Parameterzahl verändern, ohne dass sich BMax beschwert - logisch, einem Zeiger sieht man ja nicht an, was die Funktion eigentlich erwartet. Der Code oben wird (zumindest bei mir) zwar fehlerfrei ausgeführt, aber wenn man bei Referenz2 den Rückgabewert nur mal schnell auf String abändert, crasht das ganze relativ unschön Razz

Daher: Bei Byte Ptr immer aufpassen und nach Möglichkeit gar nicht verwenden (auch wenn sich das manchmal nicht vermeiden lässt, wenn man mit C-Codes arbeitet).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

BladeRunner

Moderator

BeitragFr, Nov 27, 2009 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ja auch klar ist, mittels eines Pointers hebelt man ja alle Sicherheitsmassnahmen aus. Ist ja auch nicht wirklich Sinn der Übung.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ComNik

BeitragSa, Nov 28, 2009 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, nochmal vielen Dank an Noo und BR Smile

@Coolo: Jup das hatte ich auch verstanden. Aber dann sagtest du etwas in Richtung Pointer vermeiden. Und das wollte ich auch aber ich hab gemerkt das ich nicht drum rum komme. Nur ein paar Meinungen einholen Wink

lg
ComNik
WIP: Vorx.Engine

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group