Compile Error: "ISO C Forbids Comparison Between Pointer and Integer"
When trying to compile a function in C , you may encounter a "compile error: ISO C forbids comparison between pointer and integer." This error results from an attempt to compare a pointer value with an integer.
The Issue
In the provided code snippet:
<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>
The error occurs on the line:
<code class="cpp">if (answer == "y") return true;</code>
Here, the variable answer is declared as a char, while the string literal "y" is a string. Comparing a char pointer to a string literal is forbidden in ISO C , as it can lead to subtle errors.
Solutions
There are two ways to fix this issue:
1. Convert answer to a string:
<code class="cpp">string answer;</code>
This approach is preferred because it aligns with modern C best practices.
2. Use single quotes for the string literal:
<code class="cpp">if (answer == 'y') ...</code>
Single quotes denote a char constant, which is compatible with the char variable answer.
The above is the detailed content of Why am I Getting a \'Compile Error: ISO C Forbids Comparison Between Pointer and Integer\'?. For more information, please follow other related articles on the PHP Chinese website!