Salut à tous et toutes :),
Je débute en programmation et j’aimerais avoir vos avis et par la même occasion poser un problème.
Pour coder j’utilise visual studio d’une part et visual studio code d’une autre part à fin de faire des comparaisons et, voire ce qui est mieux. Pour le moment je ne suis pas encore fixé et prendre une décision devient avec le temps de plus en plus difficile, car les deux ont parfois pour le même code des comportements différents. J’aimerais donc savoir quel serait selon vous le mieux adapté.
Par différence de comportement, je veux souligner le fait que pour le même code visual studio Code me renvoie des erreurs ou avertissements et visual studio pas. Voici quelques exemples et j’aimerais savoir comment résoudre ces problèmes.
- Pour le code suivant VS Code me renvoie un message d’avertissement alors que visual studio non. En modifiant les niveaux des erreurs à signaler dans visual studio, je réussis à avoir un avertissement pour la ligne 4, mais pas pour la 5.
#include <iostream>
using namespace std;
int main(){
std::cout << "C:\Program Files (x86)" << std::endl;
std::cout << 'ab' << std::endl;
return 0;
}
- Pour le code suivant le
find_if_not
des ligne 10 a 13 n’est pas reconnu dans VS Code mais celui de la ligne 16 ci.le message d’erreur estno matching function for call to 'find_if_not(std::__cxx11::basic_string<char>::iterator, std::__cxx11::basic_string<char>::iterator, <unresolved overloaded function type>)'
. En enlevant la ligneusing namespace std;
, l’erreur disparait. Dans Visual Studio, avec ou sans la ligneusing namespace std;
je ne recois pas d’erreur.
#include <iostream>
#include <string>
#include <array>
#include <algorithm>
using namespace std;
int main(){
std::string text{"Text avec espace. "};
auto deb { std::find_if_not(std::begin(text), std::end(text),isspace)};
auto fi { std::find_if_not(std::rbegin(text), std::rend(text),isspace)};
std::string::iterator deb1 { std::find_if_not (std::begin(text), std::end(text),isspace)};
std::string::iterator fi1 { std::find_if_not (std::begin(text), std::end(text),isspace)};
std::array<int,5> foo = {1,2,3,4,5};
std::array<int,5>::iterator ita { std::find_if_not (foo.begin(), foo.end(), [](int i){return i%2;} )};
return 0;
}
- Pour le code suivant, dans VS Code je reçois l’erreur
'const' qualifiers cannot be applied to 'int&'
à cause de la ligne 8. Dans Visual Studio par contre non. Ici je suis très perturbé car je cherche a créer une référence constante sur un entier. Si je ne me trompe pas il faut lire de la droite vers la gauche. Ce qui selon moi devrait donner pour & const une référence constante et cela associé a int, une référence constante sur un entier.
#include <iostream>
int main(){
int entier{ 40 };
int& reference_entier{ entier };
reference_entier += 2;
int const entier_constant{ 0 };
int const& reference_const_entier_constant{ entier_constant };
int& const ref{ entier };
return 0;
}
Je tiens à ajouter que mes projets sous Visual Studio 2019 sont paramétrés comme indiqué dans ce cours : https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/le-debut-du-voyage/5210_le-minimum-pour-commencer/#visual-studio-community. Pour visual studio code j’utilise le compilateur minGW W64 version 12.2.0.
Merci pour votre temps et en avance pour vos retours.
Kev_k