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!
Il semble que le compilateur ne sache pas ce qu'est U32. Avez-vous inclus tous les en-têtes nécessaires? – PeterK
Vous voudrez peut-être faire une réponse, @Peter, c'est presque certainement correct. – paxdiablo
Terminé. Au début, je n'étais pas sûr, puisque l'OP mentoined va_args(), mais n'y voyait aucun problème ... – PeterK