2017-10-02 3 views
0
#include <iostream> 
#include <stdio.h> 
#include <vector> 
using namespace std; 

int Answer; 
struct _pair { 
    struct _pair(int a) : value(a), cnt(1) {} 
    unsigned int value; 
    unsigned int cnt; 
    }; 


int main(int argc, char** argv) 
{ 

    return 0; 
} 

ce code se produit erreur: « erreur: attendu-id non qualifié avant 'int' struct _pair (int a): valeur (a), cnt (1) { } "erreur struct Unknown en C++ lors de la compilation avec GCC

Il ne fait aucune erreur sur VS2017, mais il fait une erreur sur le compilateur GCC.

+7

Il ne devrait pas être '' struct' dans struct _pair (int a): valeur (a), cnt (1) {} '. –

+2

Aussi: 'using namespace std;' en combinaison avec un préfixe de symbole '_' pourrait vous donner toutes sortes d'erreurs de compilation bizarres. – user0042

+0

C'est un préfixe de soulignement d'espace de noms global, donc 'using namespace std;' n'est pas requis pour faire des ravages. Cela ne fait qu'empirer les choses. Plus d'infos ici: [Quelles sont les règles d'utilisation d'un underscore dans un identifiant C++?] (Https://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in- identifiant-ac) – user4581301

Répondre

4

Le constructeur n'a pas besoin de qualification struct:

#include <iostream> 
#include <stdio.h> 
#include <vector> 
using namespace std; 

int Answer; 
struct _pair { 
    _pair(int a) : value(a), cnt(1) {} 
    unsigned int value; 
    unsigned int cnt; 
};