Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 00:31

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ Wrapper nötig? (cURL / libxml2)

Discussion on C++ Wrapper nötig? (cURL / libxml2) within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
C++ Wrapper nötig? (cURL / libxml2)

Hallo
Kurze Frage, sind C++ Wrapper wirklich nötig? Ich benutze ab und zu die cURL libary und für C++ gibt es ja einen C++ Wrapper namens "curlpp", meine Frage ist welche Vorteile diese Wrapper bringen und ob sie notwendig sind (mit cURL alleine hat alles auch gut funktionier )

Oder liegt es einfach daran dass es ein schlechter Programmierstil ist C und C++ zu vermischen?
Krabat2 is offline  
Old 02/10/2016, 01:12   #2
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by Krabat2 View Post
Oder liegt es einfach daran dass es ein schlechter Programmierstil ist C und C++ zu vermischen?
Schlecht ist vielleicht übertrieben, denn es gibt einige Sachen, die in reinem ANSI-C eben viel schneller ablaufen als in C++.
Aber zumindest sollte man das nur machen, wenn es nötig ist.

Das heißt:
Gewissermaßen ist C und C++ mischen kein guter Stil.
Damit ist aber weniger gemeint alles in Klassen zu klatschen als viel mehr so Sachen wie "malloc" statt "new" benutzen oder "char*" statt "std::string". Auch "NULL" anstatt "nullptr" oder "T*" anstatt Smart-Pointern ist nicht gerade empfehlenswert.
Es sind also mehr die Kleinigkeiten, die man hier konkret anspricht.
"Globale" Funktionen kann man auch in C++ benutzen, ohne dass es gleich ein schlechter Stil ist (du solltest aber vielleicht einen Namespace benutzen).

Alles in allem bringt aber jede std:: Klasse einen gewissen Overhead mit, allgemein bringt jede Klassen-Orientierung immer einen gewissen Overhead mit. Das heißt es gilt oft abzuwägen.

Aber um die Brücke zu deiner Frage zu schlagen:
Ich kenne curl nicht direkt, kann mir nur allgemein ein paar Funktionen vorstellen.
Ganz allgemein kann man aber sagen, dass so Sachen wie "std::string sendRequest(std::string url)" sicherlich keinen wrapper brauchen.
Da aber viele Funktionen in etwa so aufgebaut sein werden:
"bool setCookie(struct SomeHTTPInfoStruct,std::string)"
macht es schon Sinn einen wrapper zu benutzen, um sich diese unnötige Arbeit zu erleichtern.

Aber letztendlich bleibt es Geschmackssache.
Shadow992 is offline  
Old 02/10/2016, 13:06   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
C++ Wrapper vereinfachen vieles.

Programmbibliotheken sind normalerweise ja nur eine Sammlung von Funktionen, die keine erweiterten Strukturen aus z.B. C++ enthalten, die Wrapper werden daher meist nur für C geliefert, da man diese in andere Sprachen leicht (und automatisiert) übersetzen kann. C++ Wrapper nehmen jetzt den C Wrapper und binden den in C++ übliche Strukturen ein, Namespaces, Klassen, all das was Sprachspezifisch ist und nicht so einfach übernommen werden kann. Das macht die Nutzung aber zum einen für gewohnte C++ Programmierer einfacher, zum anderen auch generell angenehmer durch z.B. Reference counted Objekte.

Normalerweise sind solche Bibliotheken auch immer recht ähnlich, sei es SDL, OpenSSL, oder ähnliche, es ist immer das selbe Prinzip, es gibt eine Initialisierungsfunktion mit der die nötigen Informationen in einen Record/Struct schreibt, dann einen Haufen Funktionen die mit diesem Record arbeiten, und am Ende kommt noch eine Close Funktion um die Daten freizugeben, das ist die C Variante Klassen zu simulieren. Und da macht es natürlich auch Sinn einfach eine Klassenstruktur drum herum zu bauen, so hat man das ganze Übersichtlicher und vor allem hat man dann auch die Vorteile von Klassen die man mit C nicht so einfach bekommt, wie z.B. Konstruktoren/Destuktoren, Reference Counting, Sichtbarkeitsbereiche Public und Private, falls nötig Vererbung, etc.
All das kann in C zwar u.a. Simuliert werden, ist/wäre allerdings sehr viel aufwendiger.

Natürlich kann man einfach den C Wrapper verwenden, aber meist macht der C++ Wrapper einem die Sache noch leichter, und man muss nicht aus seinem gewohnten C++ Programmierstil ausbrechen.

Zwar hat Shadow992 recht, es gibt einen Overhead, allerdings ist das nur ein sehr geringer Konstanter Overhead, und in Zeiten in denen Computer 4-8 GB Ram und 2-3 GHZ pro Prozessor(kern) haben ist das eher zweitrangig und in den meisten Fällen irrelevant.
warfley is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
[C++] WinAPI GUI Wrapper
12/31/2013 - Coding Snippets - 0 Replies
Mal wieder was kleines von mir. Momentan versuche ich mich ein wenig an der Win32 API & das C-Zeugs hat mich irgendwann genervt, also habe ich angefangen, Wrapper für die GUI-Elemente zu schreiben. Momentan sind 2 Controls fertig, Button und Window. Bis auf WM_COMMAND und WM_DESTROY wird bisher keine Nachricht verarbeitet. nd::Window kann mit dem += Operator neue Controls hinzufügen (wie z.B. den Button) und mit dem -= Operator können diese wieder entfernt werden. nd::Button kann mit...
Glide-Wrapper
01/23/2012 - Diablo 2 - 3 Replies
jo jo, ich brauch hier mal einen, der bissel was davon versteht^^ läuft er überhaput auf meinem rechner... Prozessor: AMD Athlon(tm) X2 Dual-Core QL-64 2.1 GHz is win7 drauf... das zeigt er mir an, is das alles so richtig?
au3 wrapper
12/23/2008 - Guild Wars - 11 Replies
hi ganz dumme fragen^^ wo gibst den neuen au3 wrapper zum download bei google habe ich ncihts gefunden oder ich bin einfach zu blöd zum richtig googlen kann mir wer weiter helfen??
Empty wrapper help
01/18/2008 - WoW PServer Exploits, Hacks & Tools - 1 Replies
I play on wowfusion, the only wrapping paper i can get is the empty wrapper. But everytime i try to wrap something i get : Wrapped item can't be wrap. What can i do? I tryed a lot of item and i always get this same message. I tryed slot switching , other bags and ... Any help would be appreciated. Thx



All times are GMT +2. The time now is 00:31.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.