Es geht um diesen define hier:
Code:
#define c2l(c,l)	(l =((DES_LONG)(*((c)++)))    , \
			 l |=((DES_LONG)(*((c)++)))<< 8L, \
			 l |=((DES_LONG)(*((c)++)))<<16L, \
			 l |=((DES_LONG)(*((c)++)))<<24L)
Dabei soll eine unsingend char[] zu einer unsigned long gewandelt werden.

Der Code dazu ist folgender:

Code:
DES_LONG tout0;   // Hier handelt es sich um einen __u32
unsigned char *iv;  

c2l(iv,tout0);
Das ganze ist nicht auf meinem Mist gewachsen, sondern kommt in Krypto-Progs (hier DES, aus OpenSSL genommen) vor.

Compilerlauf = ok!
Programmlauf = ok!

Aber bei dieser c2l(); hört er einfach auf und macht scheinbar unbeirrt weiter ?!?




[snip]




Verstehe ich wenigstens das hier richtig?

Code:
 l|=((DES_LONG)(*((c)++)))<< 8L, \


l = l Oderverknüpft mit dem was beim Cast von dem unsingned char rauskommt und um 8bit geshifted?
Aber was ist das "L"?