Visual Studio toont C++ ambiguïteitsfouten na toevoeging van if-statement

Ik heb een raar codeprobleem. In visuele studio hebben al mijn ‘cout’s, ‘cin’s en mijn ‘systeem’ rode kronkels en zijn gemarkeerd als dubbelzinnige code. Het project compileert nog steeds prima en geeft me geen fouten of waarschuwingen, maar het is vervelend en zorgt ervoor dat ik niet weet wanneer ik een echte fout maak. Het begon allemaal toen ik het gedeelte ‘if(argc > 0)’ toevoegde en als ik het verwijder, verwijder en typ dan ‘met namespace std;’ opnieuw. de kronkels verdwijnen. Helaas keert het probleem terug wanneer ik de bovenstaande ‘if’-instructie opnieuw typ. Ik zou wat hulp erg op prijs stellen.
Bedankt mensen!

#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;
}

Antwoord 1, autoriteit 100%

Het is duidelijk dat het grootste deel van dat programma nooit zal worden uitgevoerd, omdat:

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

wijst0 toe aan argcen test vervolgens false, omdat argcnu 0is, dus het codeblok wordt nooit uitgevoerd.


Antwoord 2, autoriteit 75%

Je hebt een fout:

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

Geen compileerfout, maar een logische fout. Mogelijk zorgt dit ervoor dat Visual Studio-codeanalyse zich realiseert dat u zegt:

if(0) {   

wat nooit waar is, dus code-analysator weet dat het blok niet kan worden uitgevoerd.

Other episodes