Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visual Studio shows C++ ambiguity errors after adding if-statement

I'm having this weird code issue. In visual studio all of my 'cout's, 'cin's, and my 'system' have red squiggles and are marked as ambiguous code. The project still compiles fine and doesn't give me any errors or warnings but it's annoying and will stop me from knowing when I'm making an actual error. It all started when I added the 'if(argc > 0)' part and if I remove it then delete and retype 'using namespace std;' the squiggles disappear. Sadly when I retype the above 'if' statement the problem returns. I would really appreciate some help. Thanks people!

#include <string>
#include <iostream>
#include "chkString.h"
using namespace std;

int main(int argc, char * argv){
    int cipher;
    int encryption;
    string keyPhrase;
    string iFile;
    string oFile;
    chkString chk;
    cout << "Hello User!" << endl;
    if(argc > 0){
        cout << "Hello";
    }
    if(argc = 0){
        cout << "Enter '1' for Vigenere, or '2' for Playfair, or '0' to quit: ";
        cin >> cipher;

        while(cipher != 1 && cipher != 2 && cipher != 0){
            cout << "I'm sorry that is not a valid entry. "
                << "Please retry." << endl <<
                "Enter '1' for Vigenere, or '2' for Playfair, or '0' to quit: ";
            cin >> cipher;
        }
        if(cipher == 0){
            return 0;
        }

        cout << "Enter '1' for encryption, '2' for decryption: ";
        cin >> encryption;

        while(encryption != 1 && encryption != 2){
            cout << "I'm sorry that is not a valid entry. "
                << "Please retry." << endl <<
                "Enter '1' for encryption, '2' for decryption: ";
            cin >> encryption;
        }

        cout << "Enter the keyphrase: ";
        cin >> keyPhrase;

        while(!(chk.intCheck(keyPhrase))){
            cout << "I'm sorry that is not a valid entry. "
                    << "Please retry." << endl << "Enter keyphrase: ";
                cin >> keyPhrase;
        }

        cout << "Enter your output file name: ";
        cin >> oFile;

        cout << "Enter yout input file name: ";
        cin >> iFile;
    }
    cout << "Hello" << endl;
    system("pause");
    return 0;
}
like image 727
mattersonline Avatar asked Sep 30 '14 01:09

mattersonline


2 Answers

It's evident that most of that program will not ever be executed because:

if(argc = 0){
// ...
}

assigns 0 to argc and then tests false, because argc is now 0, so the code block is never executed.

like image 187
rici Avatar answered Nov 10 '22 14:11

rici


You have an error:

if(argc = 0){    // should be ==

Not a compile error, but a logic error. Possibly it is causing Visual Studio code analysis to realize that you are saying:

if(0) {   

which is never true, so code analyzer knows the block can't execute.

like image 42
codenheim Avatar answered Nov 10 '22 14:11

codenheim