Fondamentalement, le program compile sur codeblocks, mais pas sur Visual Studio 2015, à moins ajouterPourquoi studio visuel a besoin de <string> pour compiler, mais codeblocks doesnt?
#include <string>
à l'un des fichiers, puis-je obtenir sur les erreurs de la première ligne du code
1>------ Build started: Project: ConsoleApplication2, Configuration: Release Win32 ------
1> pytanie.cpp
1>pytanie.cpp(25): error C3861: 'getline': identifier not found
1>pytanie.cpp(42): error C2679: binary '<<': no operator found which takes a
right-hand operand of type 'std::string' (or there is no acceptable
conversion)
et environ 200 lignes de ce genre de choses
'std::basic_ostream<char,std::char_traits<char>>
&std::basic_ostream<char,std::char_traits<char>>::operator <<(const void *)'
la question est, pourquoi codeblocks peut compiler et exécuter ce programme, b ut besoin visual studio
#include <string>
j'ai découvert - grâce à ce forum - que l'utilisation getline et < opérateur < exige notamment la ligne « inclure chaîne », mais pourquoi peut codeblocks travailler sans elle, ou pourquoi visual studio 2015 NE PEUT PAS?
edit: oui, codeblock utilise le compilateur GNU GCC et VS2015 utilise par défaut
Un autre en-tête inclut «» (ou un sous-ensemble de celui-ci) dans votre cas de codeblocks. C++ permet aux en-têtes standard d'inclure d'autres en-têtes standard de manière non spécifiée. Apparemment, cela se produit avec n'importe quel toolchain que vous utilisez dans les blocs de code, mais pas avec Visual Studio. –
cela n'a rien à voir avec Visual Studio vs CodeBlocks. Cela concerne les en-têtes de leurs chaînes d'outils sous-jacentes, à savoir celles de MSVC et de la chaîne d'outils apparemment non-MSVC utilisée par CodeBlocks (probablement GCC + glibc). Apparemment, l'en-tête iostream de glibc inclut '', tandis que celui de MSVC ne l'est pas. –
Ni Visual Studio ni CodeBlocks ne sont des compilateurs. Ce sont des programmes qui invoquent des compilateurs. Cela ne les rend pas compilateurs, tout comme 'cmd.exe' ne devient pas un compilateur juste parce que' cl.exe' est démarré à partir de là. –