Warnung C6395
%variable% verfügt über nicht abgesenkte Lese- und/oder Schreibvorgänge vor C++17; Das Ändern des Sprachstandards kann das Verhalten des Codes ändern.
Hinweise
C++17 hat die Auswertungsreihenfolge bestimmter Ausdrücke strenger gemacht. MSVC hat die Auswertungsreihenfolge für einige Ausdrücke geändert. Daher kann das Ändern der Sprachversion das feststellbare Verhalten des Programms ändern. Bei dieser Überprüfung werden einige Fälle diagnostiziert, in denen sich die Bedeutung des Codes aufgrund des Wechsels von Sprachversionen ändert.
Codeanalysename: EVAL_ORDER_CHANGE
Beispiel
void foo(int* a, int i)
{
a[++i] = i; // Warning: 'i' has unsequenced reads and/or writes before C++17; changing the language standard might change the behavior of the code
}
Um dieses Problem zu lösen, trennen Sie die Nebenwirkungen vom rest des Ausdrucks, um die Auswertungsreihenfolge gut definiert zu machen:
void foo(int* a, int i)
{
++i;
a[i] = i; // No warning.
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für