Ich bin sicher, dass Sie mit Speicherklassenspezifizierern in C vertraut sind, die "extern", "statisch", "register" und "auto" sind. Die Definition von "auto" wird in anderen Antworten ziemlich häufig angegeben, aber hier ist eine mögliche Verwendung des Schlüsselworts "auto", die ich nicht sicher bin, aber ich denke, dass sie vom Compiler abhängig ist. Sie sehen, in Bezug auf Speicherklassenspezifizierer gibt es eine Regel. Wir können nicht mehrere Speicherklassenspezifizierer für eine Variable verwenden. Aus diesem Grund können statische globale Variablen nicht extern bereitgestellt werden. Daher sind sie nur ihrer Datei bekannt. Wenn Sie zu Ihrer Compilereinstellung gehen, können Sie das Optimierungsflag für die Geschwindigkeit aktivieren. Eine der Möglichkeiten, die der Compiler optimiert, ist: Es sucht nach Variablen ohne Speicherklassenspezifizierer und führt dann eine Bewertung basierend auf der Verfügbarkeit des Cache-Speichers und einigen anderen Faktoren durch, um festzustellen, ob diese Variable mit dem Registerspezifizierer behandelt werden soll oder nicht. Was ist nun, wenn wir unseren Code auf Geschwindigkeit optimieren möchten, während wir wissen, dass eine bestimmte Variable in unserem Programm nicht sehr wichtig ist und wir nicht möchten, dass der Compiler sie überhaupt als Register betrachtet. Wenn Sie jedoch auto setzen, kann der Compiler einer Variablen keinen Registerspezifizierer hinzufügen, da Sie "register auto int a" eingeben. ODER "Auto Register Int Int;" löst den Fehler aus, mehrere Speicherklassenspezifizierer zu verwenden. Zusammenfassend dachte ich, dass Auto dem Compiler verbieten kann, eine Variable durch Optimierung als Register zu behandeln. Was ist, wenn wir unseren Code auf Geschwindigkeit optimieren möchten, während wir wissen, dass eine bestimmte Variable in unserem Programm nicht sehr wichtig ist und wir nicht möchten, dass der Compiler sie überhaupt als Register betrachtet? Wenn Sie jedoch auto setzen, kann der Compiler einer Variablen keinen Registerspezifizierer hinzufügen, da Sie "register auto int a" eingeben. ODER "Auto Register Int Int;" löst den Fehler aus, mehrere Speicherklassenspezifizierer zu verwenden. Zusammenfassend dachte ich, dass Auto dem Compiler verbieten kann, eine Variable durch Optimierung als Register zu behandeln. Was ist, wenn wir unseren Code auf Geschwindigkeit optimieren möchten, während wir wissen, dass eine bestimmte Variable in unserem Programm nicht sehr wichtig ist und wir nicht möchten, dass der Compiler sie überhaupt als Register betrachtet? Wenn Sie jedoch auto setzen, kann der Compiler einer Variablen keinen Registerspezifizierer hinzufügen, da Sie "register auto int a" eingeben. ODER "Auto Register Int Int;" löst den Fehler aus, mehrere Speicherklassenspezifizierer zu verwenden. Zusammenfassend dachte ich, dass Auto dem Compiler verbieten kann, eine Variable durch Optimierung als Register zu behandeln. löst den Fehler aus, mehrere Speicherklassenspezifizierer zu verwenden. Zusammenfassend dachte ich, dass Auto dem Compiler verbieten kann, eine Variable durch Optimierung als Register zu behandeln. löst den Fehler aus, mehrere Speicherklassenspezifizierer zu verwenden. Zusammenfassend dachte ich, dass Auto dem Compiler verbieten kann, eine Variable durch Optimierung als Register zu behandeln.
Diese Theorie hat für den GCC-Compiler nicht funktioniert, ich habe jedoch keine anderen Compiler ausprobiert.
autokann , der jedoch nicht standardmäßig auftritt?