2010-06-23 10 views
0

Je veux wirte une fonction avec des arguments variables de cette façon:avec va_arg()

static void configElement(U32 localFaultId, 
          char* name, 
          U32 report, 
          U32 localId, 
          U32 detectTime, 
          U32 ceaseTime,...) 
{ 
    U32 i = 0; 
    U32 tmpNo = 0; 
    va_list ap; 

    if (nofFaults >= MAX_NOF_LOCAL_FAULTS) 
    { 
    //something here 
    return; 
    } 
    else 
    { 

    faultList[nofFaults].ceaseTime = ceaseTime; 

    va_start(ap, ceaseTime); 
    tmpNo = va_arg(ap, U32); 
    while ((tmpNo!= END_MARK) && (i < MAX_NOF_DEPEND)) 
    { 
     faultList[nofFaults].dependList[i++].faultNo = tmpNo; 
    } 


    faultList[nofFaults].dependList[i].faultNo = END_MARK; 
    /* Finish by increment nofFaults parameter */ 
    va_end(ap); 
    nofFaults++; 
    } 
} 

Cependant, je me suis le msg d'erreur lors de la compilation de ce code:

fault_manager.cc:3344: error: expected primary-expression before ',' token 
fault_manager.cc:3387: error: expected primary-expression before 'U32' 
fault_manager.cc:3387: error: expected `)' before 'U32' 
fault_manager.cc:3387: error: expected `)' before ';' token 
fault_manager.cc:3387: error: expected `)' before ';' token 

Je ne idée de ce qui ne va pas ici. Ma plate-forme est Windows et j'utilise cygwin + Eclipse (CDT). La version de gcc est 4.1.1.

Toute idée sera beaucoup appréciée!

+3

Il semble que le compilateur ne sache pas ce qu'est U32. Avez-vous inclus tous les en-têtes nécessaires? – PeterK

+0

Vous voudrez peut-être faire une réponse, @Peter, c'est presque certainement correct. – paxdiablo

+0

Terminé. Au début, je n'étais pas sûr, puisque l'OP mentoined va_args(), mais n'y voyait aucun problème ... – PeterK

Répondre

4

Il semble que le compilateur ne sache pas ce qu'est U32. Avez-vous inclus tous les en-têtes nécessaires?