C fuggveny hatarozatlan szamu agumentummal

WLC02E, wlc02e at automation.siemens.com
Mon Sep 12 08:56:20 CEST 2005


Sziasztok,
 
LCD-n vagy adott pozicioba, vagy a kurzor aktualis poziciojaba irnam ki
a megadott sztringet. Ha nincs kituntetett pozicio -marad a kurzor
aktualis helye-, akkor a fuggveny meghivasakor szeretnem elhagyni a
koordinata parametereket. Ezzel kapcsolatban lenne 3 kerdesem:
1, Miert mukodik a lenti kodreszlet csak akkor, ha y-t ketszer olvasom
ki? (egyebkent y=0)
2, Hogy lehetne megoldani, hogy elhagyott parameter eseten ne 0-t kapjak
vissza, hanem pl. -1-et, mivel (0, 0) lenne az egyik pont az LCD-n,
ahova szinten pozicionalni szeretnek.
3, Lehetne-e cserelni az argumentumok sorrendjet, azaz eloszor az
opcionalis koordinatak, majd a kiirando adat? A va_start(...)-ban a
masodik argument az utolso fix parameter kell(ene) hogy legyen, hogy
nezne ki ebben az esetben a va_start?
 
Bonusz kerdes :) : 
4, Lokalis valtozo mindig regiszterbe kerul, nem? Van ertelme a
"register" hasznalatanak a valtozok deklaraciojanal?
 
/ATmega128, IAR C/
 
Koszonom a segitseget!!
 
Udv: 
   Gyenge Zoltan  
 
void LcdPrintData(const char* data, ...)
{
     register unsigned char i, position, x=0, y=0, counter;
     va_list ap;
     va_start(ap, data);
     if (!data) return;              // Check to make sure we have a
good pointer
     x = va_arg(ap,unsigned char);
     y = va_arg(ap,unsigned char);
     y = va_arg(ap,unsigned char);
     if ((x>0)&&(x<21)&&(y>0)&&(y<4)) LcdGotoXY(x,y);  
     position=LcdControlRead();      // Read the actual cursor position
     counter=0;    
 
...
}



More information about the Elektro mailing list