Pokouším se vytvořit funkci, která může mít dva nepovinné argumenty pro načtení bitmapy a dostávám hlášku:
http://paste.ofcode.org/ZKN85RMnUtSYuSAVJkpwd9
warning: second parameter of 'va_start' not last named argument
Zkráceně:
int num; bool loadbitmap; char ** pBitmap;
va_list ap;
va_start(ap, num);
loadbitmap = va_arg(ap, bool);
pBitmap = va_arg(ap, char ** );
va_end(ap);
if (loadbitmap){
*pBitmap = (char *) malloc( bmpfile->dib.raster_size );
num = fseek(fp, bmpfile->header.offset, SEEK_SET);
if (num) return -3;
if ( !fread(block, bmpfile->dib.raster_size, 1, fp) ) {
fclose(fp);
return -4;
}
fclose(fp);
}
Co musím opravit, aby byla funkce v pořádku?
Funkce načte hlavičku a pokud přidám argument true a &buffer tak by se měl taky načíst obraz.
BMPFILE *bmpfile;
bool loadbitmap = true;
char * buffer; // bitmap buffer
// arg2 = loadbitmap,arg3 = buffer are optional
bmp_read_file(argv[1],&bmpfile,loadbitmap,&buffer);
Jak to opravit aby loadbitmap (uvnitř funkce) loadbitmap = va_arg(ap, bool); bylo true a ne 1.
Jak to opravit aby když zavolám
bmp_read_file(argv[1],&bmpfile);
loadbitmap = va_arg(ap, bool); bylo false a ne nějaké číslo integer.