Hallo Leute,
Ich suche ein Makro, das mit die Anzahl der Parameter angibt.
Der folgende Code funktioniert nicht, das assert springt manchmal an,
obwohl alles ok ist.
Grüße Chris
char* PString::append(const char* str, … )
{
// TODO assert that occurencies of % match number of parameters
// TODO assert that type of parameters are valid (no PString but char*)
const int bufferSize = 1024;
char charBuffer[bufferSize];
va_list vlist;
va_start(vlist, str);
#ifdef DEBUG
int count_in_args = 0;
va_list args;
void* option = (void*)str;
va_start(args, str);
do
{
++count_in_args;
option = va_arg(args, void*);
}
while (option != 0 && option != " ");
va_end(args);
assert( count_in_string == count_in_args );
#endif
_vsnprintf( charBuffer, bufferSize-1, str, vlist );
cat( charBuffer );
return s;
}
Aufruf etwa mit PString().append("%f", 5.0f) oder („a%sc“, „b“)