nbcommon.c
-
Hi,
also ich lerne gerade mithilfe eines buches ( oder möchte es zumindest ) wie man zwischen clienten kommunizieren lässt oder netzwerke aufbaut. und da hab ich das problem das ich eben bei net bios anfange und dort die datei nbcommon.c einbinden soll. hab ich gemacht nur ist es jetzt so das er mir konvertierungsfehler von UCHAR * nach char * bringt. Es gibt jedoch keinerlei unterschied der dateien mit denen im buch beschriebenen :|
ich kompilliere mit devc++ mit mingw.
die fehler sind in den zeilen 68 92 116
http://rafb.net/p/Kvk3cq64.html ( die dazugehörige header datei http://rafb.net/p/k0tLRt40.html )
wäre echt nett wenn ihr mir dabei helfen könntet.
-
Fehler oder nur Warnungen? Sonst konvertiere doch einfach (Cast).
-
Fehler, hab ich versucht. aber dann gibts wieder den fehler:
116 D:\Programme\Dev-Cpp\Projects\TestProj\nbcommon.c invalid conversion from `UCHAR*' to `char*'
-
Zeig mal den Code.
-
Das ganz wird wohl daran scheitern, dass UCHAR mutmaßlich ein typedef oder ein Makro auf unsigned char ist und dieser einen anderen Wertebereich als (signed) char besitzt. Daher kann nicht sicher implizit gecasted werden.
http://www.cplusplus.com/reference/clibrary/cstring/strncpy.html gibt folgende Signatur für strncpy vor:
char * strncpy ( char * destination, const char * source, size_t num );Wobei diese ein definiertes Verhalten hat, was die Behandlung von null-Bytes angeht (!).
Wie matze_ schon erwähnt hat, solltest du einen UCHAR explizit in einen char casten, um diesen mit strncpy zu verwenden:
unsigned char foo[] = { 250, 126, 255 }; char bar[3]; strncpy(bar, reinterpret_cast<char*>(foo), 3);Bedenke aber, dass dir das ganze um die Ohren fliegen kann, sobald du den Wertebereich von char (-127 bis 127) verlässt (Bsp: 250 und 255).
Ggf. kannst du dir auch eine eigene (template)Kopierfunktion für Arrays basteln - sicher gibts dort bereits Standardimplementationen.
Grüße... Heiko