2016-07-14 10 views
-3

Ich bin neu in C-Programmierung und mit einer bestimmten Bibliothek. Ich brauche diese Funktion zu nutzen:Implementieren Sie eine Funktion mit sizeof

le_result_t le_ecall_ExportMsd (le_ecall_CallRef_t  ecallRef, 
           uint8_t *    msdPtr, 
           size_t *    msdNumElementsPtr 
           ) 

Wo die Parameter:

[in] ecallRef     eCall reference 
[out] msdPtr     the encoded MSD 
[in,out] msdNumElementsPtr 

Um das zu bekommen que codiert MSD ich diesen Code entwickelt (etwas vereinfacht):

static le_ecall_CallRef_t LastTestECallRef = NULL; 
uint8_t msd[] = NULL; 

void StarteCall (void) 
{ 
    le_ecall_ExportMsd(LastTestECallRef, msd, sizeof(msd)); 
} 

Sizeof gibt size_t zurück und ich brauche size_t *, damit ich den folgenden Fehler erhalte:

expected 'size_t *' but argument is of type 'unsigned int' 

Ich wäre dankbar, wenn mir jemand helfen könnte.

+4

Ich glaube nicht, dass die Fehlermeldung klarer sein könnte. Ok, es hätte 'size_t * 'erwarten können, aber Argument ist vom Typ' size_t '', aber auch ohne, finde ich es ziemlich aussagekräftig. – a3f

+0

"Sizeof gibt size_t zurück und ich brauche size_t *" - ja, das ist das Problem. Was genau ist deine Frage? – melpomene

Antwort

4

Sie müssen wie so einen Zeiger für den letzten Parameter zu übergeben:

size_t nsize = sizeof(msd); 
le_ecall_ExportMsd(LastTestECallRef, msd, &nsize); 

Der Grund ist, weil die Funktionsdefinition size_t *msdNumElementsPtr erfordert, die ein Zeiger statt size_t msdNumElementsPtr ist.

+1

Vielen Dank es funktioniert und ich verstehe es – picador

Verwandte Themen