übergabe kleinerer Variable an Funktion ?

Gast #2268165
Lesenswert?

Hallo!

Ich übergebe an eine Funktion normalerweise eine unsigned long.

Nun kann ich ja Problemlos diese Funktion auch nur mit einer unsigned 
short Füttern.

Kann ich das irgendwie unterscheiden welche Urpsrungsvariable an die 
Funktion übergeben wurde, ich möchte dann anders darauf reagieren ?

gruß,
Bjoern
#2268171
Lesenswert?

Nein.

Aufrufer und Aufgerufener müssen sich darüber einig sein, welches 
Argument was bedeutet und welchen Datentyp es hat. Nicht umsonst gibt es 
Funktionsprototypen, die dem Programmierer helfen, das sicherzustellen.

Die Alternative "variadische Funktionen" willst du an dieser Stelle mit 
Sicherheit nicht ins Auge fassen. Denn dann wird alles noh langsamer, 
als wenn du einfach immer einen unsigned long übergibst.
Gast #2268187
Lesenswert?

Nochmal ich hab diese Funktion, vieleicht hat jemand ne andere Idee
1
/*
2
  convert unsigned 32bit to string with substraction methode *** very fast***
3
*/
4

5
void u32tostr( u32 uval, char* string)
6
{
7
  u8 d, i, j;
8
  u8 zero;
9
  
10
  string[10]='\0';                       // String Terminator
11
  
12
  zero = 0;
13
  j = 0;  
14
  i = 9;
15
  
16
  do{
17
    i--;
18
    for( d = '0'; uval >= pgm_read_dword(&DEZI32[i]); uval -= pgm_read_dword(&DEZI32[i]) ){
19
    d++;
20
      zero = 0;
21
    }
22
    if( zero == 0 )
23
      string[j]= d;
24
    j++;
25
      
26
  }while( i );
27

28
  string[j]= (u8)uval + '0';
29
}

Wenn dieser Funktion ne usigned long übergeben wird soll ein 10 
stelliger String erzeugt werden, wenn ne unsigned short übergeben wird 
nur ein 5 stelliger.

Bleibt mir nichts andres übrig als 2 getrennte Funktionen zu schaffen ?

mfg,
Bjoern

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren