mam wiersza kodu, gdzie jest to całkiem przydatne:Czy jest to zły styl lub nieprawidłowy dostęp do makra va_arg przez odniesienie?
void *test;
/*...*/
test = &va_arg(arg_list, int);
Chciałam tylko to, co myślałem, że jest to makro, a nie funkcja, więc to może działać. Naprawdę nie spodziewałem się, że zadziała, ale robi dokładnie to, co chcę.
Ale teraz nie jestem pewien co do życia adresu i innych zagrożeń, które mogą wystąpić w tym stylu.
Czy ktoś może mi powiedzieć, dlaczego przy użyciu odniesienie wartości, va_arg
jest w ten sposób jest bezpieczny/niebezpieczny?
nie widzę nic w opisie, który wymaga 'va_arg (ap, type)' być lwartością. –
@JamesMcNellis Może to być nieprawidłowe w niektórych środowiskach? – dhein
@ meaning-matters Myślę, że mówi coś przeciwnego. Ponieważ standard mówi, że 'va_arg' zwraca tylko wartość, to nie składa obietnicy, że mógłbyś wziąć jej adres. Więc nie byłoby to bezpieczne. – user694733