Kleine C++ Fragen

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Kleine C++ Fragen

Beitrag von Josef Sniatecki »

Hallo,

Ich habe hier ein paar Fragen zu C++ ganz allein:
(Nicht lachen, bin kein C++ Profi)

1. Frage
Wie kann ich einen Wert aus einem void Zeiger auslesen.
Also wie mit PB durch die Peek-Befehle.

Beispiel:

Code: Alles auswählen

void *pointer;
int copyOfI;
*pointer=malloc(sizeof(int))
int *i;
i=(int*)pointer;
copyOfI=*i;
Wie kann ich die letzten 3 Zeilen kürzen?
Also in Form von "copyOfI=...pointer...;"
Hab's mal mit "copyOfI=(int)*pointer;" probiert; Ging
aber nicht.

2. Frage
Mit welchem Befehl kann ich Daten die mit "malloc" erstellt wurden
löschen. Habe mal "free" genutzt; Bin mir jedoch nicht sicher, ob dieser
Befehl genau das macht, was ich mir wünsche.

3. Frage
Wie kann ich ASM in C++ direkt nutzen. Also wie in PB durch "!".

4. Frage: Nun die große Frage
Wie kann ich Libs, die ich mit PB erstellt habe, mit C++ nutzen.
Oder besser: Wie kann ich generell Libs mit C++ nutzen.

Danke im Voraus. <)
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

void *pointer;
int copyOfI;
*pointer=malloc(sizeof(int))
copyOfI=*((int*)pointer); 
free ist korrekt. Wenn du was mit new erzeugst musst du es mit delete löschen.

Soweit ich weiß ist inline Assembler aber Kompilerabhängig.

Code: Alles auswählen

asm {
  Dein Assemblercode
}
Die 8051 C/EC++ Compiler erwarten in seltenen Fällen sogar, dass du die Opcodes einträgst. Bei anderen 8051 C/EC++ Compilern kann man es auch direkt reinschreiben.

Windows API hilft bei DLLs mit LoadLibrary, ... . Ansonsten kannst du noch statisch linken mit .lib bzw .a Dateien.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Danke für die schnelle und hilfreiche Antwort. :D
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Bin jetzt auf eine neue Wand gestoßen. Ich kann zwar meine
Libs mit LoadLibrary laden, wie kann ich jetzt aber genau diese
Befehle starten? Sowas wie CallFunction in API kenne ich nicht.

Dann habe ich auch noch gleich eine zweite Frage: Wie kann ich in C++
Funktionen durch eine Addresse aufrufen. In PB wäre es
"CallFunctionFast(@Address)"

Vielen dank im voraus.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Zur zweiten Frage: Du mußt Funktionspointer verwenden. Hier gibt's was zum Thema: http://www.newty.de/fpt/index.html
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Über Function-Pointers habe ich noch nie gehört (bis heute).
Echt toll die Sache. Danke ZeHa :allright:

Nun brauche ich noch die 1. Frage.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Josef Sniatecki hat geschrieben:Über Function-Pointers habe ich noch nie gehört (bis heute).
Echt toll die Sache. Danke ZeHa :allright:

Nun brauche ich noch die 1. Frage.
Die erste Frage war wie du eine Prozedur in einer geladenen DLL aufrufen kannst, richtig? Funktionspointer wurden ja bereits angesprochen. Die Adressen der Funktionen bekommst du mit der WinAPI: GetProcAddress
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

Danke für eure Hilfen. Werde mich dann mal ran machen. Denn ich
hätte da so einige Befehle die ich in PB geproggt habe in C++.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Antworten