#include <iostream>
using namespace std;
int main() {
printf("hello");
getchar();
return 0;
}
Ici, j'ai utilisé <iostream>
. Les printf
fonctionne ; cout
fonctionne également. S'agit-il donc d'un programme C ou C++ ?
#include <iostream>
using namespace std;
int main() {
printf("hello");
getchar();
return 0;
}
Ici, j'ai utilisé <iostream>
. Les printf
fonctionne ; cout
fonctionne également. S'agit-il donc d'un programme C ou C++ ?
C'est un programme C++, vous ne pouvez pas le compiler sans un compilateur C++ (ou sans tromper un compilateur C pour qu'il le compile, voir le commentaire de @Dan ci-dessous).
iostream
est un en-tête C++, namespace
sont une caractéristique du C++.
EDIT : ok, j'ai essayé de le compiler
Mac, Snow Leopard, i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
gcc main.cpp
-> KO
Undefined symbols: "std::ios_base::Init::Init()", referenced from: __static_initialization_and_destruction_0(int, int)in cc85GAQs.o "std::basic_string, std::allocator >::size() const", referenced from: std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in cc85GAQs.o "std::basic_string, std::allocator >::operator[](unsigned long) const", referenced from: std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in cc85GAQs.o std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in cc85GAQs.o std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in cc85GAQs.o "___gxx_personality_v0", referenced from: std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in cc85GAQs.o ___tcf_0 in cc85GAQs.o _main in cc85GAQs.o unsigned long const& std::min(unsigned long const&, unsigned long const&)in cc85GAQs.o __static_initialization_and_destruction_0(int, int)in cc85GAQs.o global constructors keyed to mainin cc85GAQs.o CIE in cc85GAQs.o "std::ios_base::Init::~Init()", referenced from: ___tcf_0 in cc85GAQs.o ld: symbol(s) not found
g++ main.cpp
-> OK
cc main.c
, gcc main.c
-> KO
main.c:1:20: error: iostream: No such file or directory main.c:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘namespace’ main.c: In function ‘main’: main.c:5: warning: incompatible implicit declaration of built-in function ‘printf’
g++ main.c
-> OK
Linux, LMDE, gcc (Debian 4.6.1-4) 4.6.1
gcc main.cpp
-> KO
main.cpp:5:15: error: ‘printf’ was not declared in this scope main.cpp:6:9: error: ‘getchar’ was not declared in this scope
g++ main.cpp
-> KO
main.cpp:5:15: error: ‘printf’ was not declared in this scope main.cpp:6:9: error: ‘getchar’ was not declared in this scope
Windows 7, MSVC 2005
Je considère donc qu'il s'agit d'un mauvais programme C++ ; et le compiler avec succès dépend de l'implémentation du compilateur.
C'est impossible à dire. Cela dépend entièrement du contenu des <iostream>
. Si <iostream>
est en effet la norme C++ <iostream>
il s'agit alors d'un programme C++. Cependant, si l'en-tête <iostream>
est un en-tête C que quelqu'un a piraté, et dans lequel sont définies des macros pour using
y namespace
alors il pourrait très bien s'agir d'un programme C.
Dans un environnement normal (standard), il s'agit de C++.
#include <iostream>
sans le .h
sur le nom du fichier d'en-tête est une caractéristique du C++.iostream
qui est un en-tête standard du C++, n'existe pas dans le C standard.using
y namespace
sont des mots réservés uniquement en C++.std
est l'espace de noms standard en C++. Le langage C ne prend pas du tout en charge les espaces de noms.Toutefois, dans un environnement personnalisé (insane), les cas suivants pourraient se présenter :
<>
iostream
using
, namespace
y std
pourraient être des macros de préprocesseur définies dans iostream
.En théorie, il pourrait sont valides C.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.