Heim > Artikel > Backend-Entwicklung > Warum erhalte ich einen „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl“?
Kompilierungsfehler: „ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl“
Beim Versuch, eine Funktion in C zu kompilieren, kann ein Fehler auftreten „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl.“ Dieser Fehler resultiert aus dem Versuch, einen Zeigerwert mit einer Ganzzahl zu vergleichen.
Das Problem
Im bereitgestellten Codeausschnitt:
<code class="cpp">#include <iostream> #include <string> using namespace std; bool accept() { cout << "Do you want to proceed (y or n)?\n"; char answer; cin >> answer; if (answer == "y") return true; return false; }</code>
Der Fehler tritt in der Zeile auf:
<code class="cpp">if (answer == "y") return true;</code>
Hier wird die Variable Antwort als char deklariert, während das String-Literal „y“ ein String ist. Der Vergleich eines char-Zeigers mit einem String-Literal ist in ISO C verboten, da dies zu subtilen Fehlern führen kann.
Lösungen
Es gibt zwei Möglichkeiten, dieses Problem zu beheben:
1. Konvertieren Sie die Antwort in eine Zeichenfolge:
<code class="cpp">string answer;</code>
Dieser Ansatz wird bevorzugt, da er mit modernen C-Best Practices übereinstimmt.
2. Verwenden Sie einfache Anführungszeichen für das Zeichenfolgenliteral:
<code class="cpp">if (answer == 'y') ...</code>
Einfache Anführungszeichen bezeichnen eine char-Konstante, die mit der char-Variablenantwort kompatibel ist.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!