Chcialbym zadekalrowc funkcje ze zmienna liczba argumentow ,ale bez podawania liczby argumentow na poczatku. Jak to zrobic w C lub za pomoca makra? czy jest to mozliwe?
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam#include <stdarg.h>
int moje_printf(const char *fmt, ...)
{
... // do dostępu do argumentów używamy funkcji z nagłówka stdarg.h
}Sam Sung napisał:#include <stdarg.h> int moje_printf(const char *fmt, ...) { ... // do dostępu do argumentów używamy funkcji z nagłówka stdarg.h }
funcvararg( int ala, char* tola, double ola,....)
{
va_list parg;
int a,b,c;
......
va_start( parg, ola);// początek pracy ze zmienną listą parametrrów
........
// tu przykładowe pobieranie kolejnych parametrów Z ZAŁOŻENIEM że są typu int
a = va_arg( parg, int );// pierwszy argumet za ola
b = va_arg( parg, int);// drugi argument za ola
c = va_arg( parg, int);// trzeci argument za ola
.....// na koniec
va_end(parg);
}
gmp napisał:chodzi mi o avr-gcc (nie ma tam strarg.h), i funkcje np:
moja_funkcja(...)
Sam Sung napisał:
moja_funkcja(...)
Takiej funkcji bez ani jednego nazwanego argumentu nie da się zrobić ...
bis napisał:A tam się nieda!. Oczywiście że się da, właśnie tymi funkcjami. (...) Oczywiście jest to jazda bez trzymanki. (...) No i zerowa przenośność, Ale można, jak najbardziej.
gmp napisał:Chodzi mi o to zeby zrobic ulatweinie dla czloweika ktory bedzie uzywal programu napisanego przeze mnie , aby latwiej mu bylo cos dopisywac.
gmp napisał:np : potrzebuje "funkcji" ktora by robila logiczne AND z argumentow AND(a,b,c,....) ->i to bylo rowanowazne( a && b && c && .....) . Wiem ze mozna to zrobic wprost ,ale to tylko przyklad. Moze da sie to zrobic jakims makrem?Argumentow moze byc od 1 do kilkunastu.