Problème programmation c++ sur linux fedora
Résolu/Fermé
l3_info
-
29 oct. 2009 à 20:16
mamiemando Messages postés 33611 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 mars 2025 - 30 oct. 2009 à 00:02
mamiemando Messages postés 33611 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 mars 2025 - 30 oct. 2009 à 00:02
A voir également:
- C++ fedora
- Fedora vs ubuntu - Guide
- Fedora live usb creator - Télécharger - Utilitaires
- Fedora video codecs firefox ✓ - Forum Fedora
- User guide pour fedora 9 - Forum Fedora
- Comment telecharger UNIX fedora gratuitement - Forum Fedora
1 réponse
mamiemando
Messages postés
33611
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mars 2025
7 836
30 oct. 2009 à 00:02
30 oct. 2009 à 00:02
Déjà c'est du C++ donc ton fichier est sensé être postfixé par un .cpp (.hpp pour les headers) et non .c (ou .h). De plus il doit être compilé avec g++ et non gcc (gcc ne compile que du C et ne sait pas où se trouvent les headers de la STL que tu tentes d'utiliser).
Ensuite il faut que tu préfixes pas les types et constantes de la STL de leur namespace, à savoir std::. Exemple :
Certains mettent après avoir fait les #include un :
... pour éviter de taper les std:: mais c'est à mon humble avis une mauvaise habitude (surtout si tu débutes en C++).
En effet, le fait de pouvoir sous-entendre le namespace std peut engendrer des collisions (si tu as par exemple le malheur de nommer une classe avec un nom déjà présent de la STL par exemple). Il ne faut jamais faire cela dans un header (.hpp) pour ne pas "contaminer" les fichiers qui pourraient l'inclure. C'est pourquoi je te conseille d'écrire systématiquement les namespace, même si ça peut paraître un peu lourd à l'écriture.
Bonne chance
Ensuite il faut que tu préfixes pas les types et constantes de la STL de leur namespace, à savoir std::. Exemple :
#include <iostream> #include <string> int main(){ const std::string s = "plop !"; std::cout << "pouet" << std::endl << s << std::endl; return 0; }
Certains mettent après avoir fait les #include un :
using namespace std;
... pour éviter de taper les std:: mais c'est à mon humble avis une mauvaise habitude (surtout si tu débutes en C++).
En effet, le fait de pouvoir sous-entendre le namespace std peut engendrer des collisions (si tu as par exemple le malheur de nommer une classe avec un nom déjà présent de la STL par exemple). Il ne faut jamais faire cela dans un header (.hpp) pour ne pas "contaminer" les fichiers qui pourraient l'inclure. C'est pourquoi je te conseille d'écrire systématiquement les namespace, même si ça peut paraître un peu lourd à l'écriture.
Bonne chance