Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nie używaj argumentów zmiennych w stylu C (f.55).
Aby uzyskać więcej informacji, zobacz F.55: Nie używaj va_arg
argumentów w wytycznych podstawowych języka C++.
Uwagi
Ta kontrola ostrzega przed wszystkimi użyciem argumentów va_list
zmiennych w stylu C, va_start
, va_arg
i va_end
. Argumenty zmiennych w stylu C są niebezpieczne, ponieważ wymagają od programisty założenia, że wszystkie argumenty są przekazywane i odczytywane z poprawnymi typami.
Ostrzeżenie C26826 jest dostępne od wersji 17.1 programu Visual Studio 2022.
Przykład
int sum(int n, ...) {
va_list l; // C26826 Don't use C-style variable arguments
va_start(l, n); // C26826 Don't use C-style variable arguments
int s = 0;
for (int i = 0; i < n; ++i) {
// BAD, assumes the variable arguments will be passed as ints
s += va_arg(l, int); // C26826 Don't use C-style variable arguments
}
va_end(l); // C26826 Don't use C-style variable arguments
return s;
}
int main() {
sum(2, 1, 2, 3); // ok
sum(2, 1.5, 3.14159, 2.71828); // BAD, undefined
}
Alternatywy dla argumentów zmiennych w stylu C obejmują:
- przeciążanie funkcji
- szablony wariadyczne
std::variant
Argumentystd::initializer_list