Partage
  • Partager sur Facebook
  • Partager sur Twitter

std::tuple non reconnue pas visual studio code

c++ visual studio code structure tuple

Sujet résolu
    2 août 2020 à 18:55:45

    Bonjour à tous,

    J'ai un problème concernant l'utilisation des tuples sur visual studio code en c++, comme vous pouvez le voir sur le screen plus bas tout ce qui est lié à la l'include tuple est mis avec une sorte de messsage d'erreur rouge comme si j'avais fait une erreurs alors que tout marchait bien pour les autres include de la bibliothèque standard.

    Sinon le code marche bien (je compile manuellement avec le terminal) mais c'est très chiant d'avoir ces traits rouge quand on code et je ne comprend pas pourquoi.

    -
    Edité par IlyasTurki 2 août 2020 à 18:56:58

    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2020 à 19:01:19

      Il manque la copie d'écran.

      PS: ah elle est arrivée entre-temps.

      Si tu avais utilisé les balises code comme c'est attendu, j'aurais pu tester ton code pour voir si j'obtenais le même résultat.

      PS (bis): j'ai recopié le code de l'exemple de cppreference et ça compile sans problème sous VS2019. Il faudrait que tu fournisses le message d"erreur

      -
      Edité par zoup 2 août 2020 à 19:06:41

      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2020 à 19:06:59

        Bonjour, 

        Les lignes 8 et 20 utilisent directement le template std::tuple sans préciser les paramètres. Ça n'est possible que depuis le C++17, peut-être que le compilateur associé à Studio Code n'est pas en mode -std=c++17.
        Essaie de remplacer dans ces 2 lignes std::tuple par auto qui est accessible depuis le C++11 (et qui est loin d'être plus mal dans ces cas.)

        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          2 août 2020 à 20:50:15

          zoup a écrit:

          Il manque la copie d'écran.

          PS: ah elle est arrivée entre-temps.

          Si tu avais utilisé les balises code comme c'est attendu, j'aurais pu tester ton code pour voir si j'obtenais le même résultat.

          PS (bis): j'ai recopié le code de l'exemple de cppreference et ça compile sans problème sous VS2019. Il faudrait que tu fournisses le message d"erreur

          -
          Edité par zoup il y a environ 1 heure


          Je crois que tu n'as pas vraiment compris mon problème. Je me suis peut être mal exprimé d'ailleurs. Le code compile très bien, mais le truc c'est que normalement sur vscode quand un code est bon (comme celui qui est repris d'un cours) il n'a pas de trait rouge pour indiquer des fautes, fautes ici qui sont du d'après moi au fait que vscode ne reconnait pas l'include tuple. C'est d'ailleurs pour cela que je ne l'ai pas mis entre balise, car ça n'a pas vraiment d'utilité ici

          Dalfab a écrit:

          Bonjour, 

          Les lignes 8 et 20 utilisent directement le template std::tuple sans préciser les paramètres. Ça n'est possible que depuis le C++17, peut-être que le compilateur associé à Studio Code n'est pas en mode -std=c++17.
          Essaie de remplacer dans ces 2 lignes std::tuple par auto qui est accessible depuis le C++11 (et qui est loin d'être plus mal dans ces cas.)


          Je ne pense pas car la c'est tout ce qui est lié au tuple qui pose problème pas seulement les lignes 8 et 20. D'ailleurs la norme c++17 est bien intégré au compilateur studio code car c'est pas la première fois que j'utilise des choses venant de cette norme sans aucun problème

          -
          Edité par IlyasTurki 2 août 2020 à 20:50:55

          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2020 à 21:38:14

            S'il y a un soulignement, il y a un message d'erreur quelque part, quel est-il ?

            • Partager sur Facebook
            • Partager sur Twitter
              2 août 2020 à 21:45:30

              Je compile manuellement avec un terminale en dehors de visual studio code, donc il n'a pas de message d'erreurs et le code marche comme il doit marcher y'a pas de problème sur ça. 

              J'ai utiliser le compilateur integré à vscode pour vous montrez les erreurs affichées si vous voulez :

              Et si vous voulez le code entre balise le voila 

              #include <iostream>
              #include <string>
              #include <tuple>
              
              int main()
              {
                  using namespace std::literals;
                  std::tuple informations = std::make_tuple("Yasso"s, "Bartichaut"s, "Blabla"s, 4);
              
                  // Accès en lecture.
                  std::cout << "Prenom : " << std::get<0>(informations) << std::endl;
                  std::cout << "Age : " << std::get<3>(informations) << std::endl;
              
                  // Accès en écriture.
                  std::get<3>(informations) += 1;
                  std::cout << "Age maintenant : " << std::get<3>(informations) << std::endl;
              
              
                  // Prénom et salaire.
                  std::tuple informations2 = std::make_tuple("Clem"s, 50000);
              
                  std::cout << "Prenom : " << std::get<std::string>(informations2) << std::endl;
                  std::cout << "Salaire : " << std::get<int>(informations2) << " euros" << std::endl;
                
              
                  return 0;
              }



              • Partager sur Facebook
              • Partager sur Twitter
                2 août 2020 à 21:57:49

                Les messages d'erreur montent que @Dalfab a tout à fait raison.

                Rien ne garantit que le "compilateur" de Visual Studio Code soit le même que celui dans le terminal, qu'il ait la même configuration ni même que les message d'erreurs viennent d'un compilateur. Visual Studio (non code) utilise un outil dédié : "Intellisense", pour avoir une vitesse de réaction et des messages d'erreurs plus riches.

                https://code.visualstudio.com/docs/editor/intellisense

                Si votre configuration Intellisense ou du compilateur "interne" de Visual Studio Code n'est pas "d'équerre", cela expliquerait ces messages d'erreur.

                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  2 août 2020 à 22:22:38

                  Ca me parrait tout de même très étrange car j'ai utilisé beaucoup de choses venant de la norme c++17  avant d'en venir là.

                  Mais imaginons que vous avez raison, comment je peux savoir la norme qu'utilise le compilateur intellisense ?

                  Et comment pourrais-je l'ameliorer en c++17 ?

                  J'utilise cette extension pour le c++ (c'est la plus populaire) https://code.visualstudio.com/docs/languages/cpp

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 août 2020 à 0:26:01

                    De souvenir il y a un paramètre pour utiliser la norme C++17 dans l'intellisense de l'extension, il faut lire la doc. Utilisant l'extension CMake Tools dans VSCode, je ne peux pas t'aider plus que ça (bien configurée, celle ci nourrit automatiquement l'intellisense donc pas de souci pour ma part...).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 août 2020 à 1:06:47

                      Merci beaucoup à tous ce qui ont participé sur ce topic, la problème est réglé. Finalement vous aviez raison, le problème était bien sur le fait que la norme n'était pas en c++17.

                      Pour ceux qui pourrais avoir le même problème que moi et qui utilise l'extention C/C++ de microsoft il faut aller dans les paramètres de l'extension (extension settings), et juste changer l'endroit ou il est marqué :

                      C_Cpp › Default: Cpp Standard
                      ( Sync: Ignored)
                      The value to use in a configuration if "cppStandard" is either not specified or set to "${default}".

                      Vous changer le default en c++17 et la plus de problème !

                      • Partager sur Facebook
                      • Partager sur Twitter

                      std::tuple non reconnue pas visual studio code

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown