Changer point d'entrée d'un programme

Résolu
cs_Havy Messages postés 7 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 12 août 2009 - 12 juil. 2009 à 12:32
cs_Havy Messages postés 7 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 12 août 2009 - 12 juil. 2009 à 19:00
Bonjour, je voudrais savoir si il est possible de changer de point d'entrée du programme.

Tout d'abord, voici ce que je voudrais faire :

Le premier programme que j'ai appelé "Programme1.cpp"

#include

using namespace std;

void Bonjour()
{
    cout<< "Bonjour tout le monde !";
}

int main()
{
    Bonjour();
}

Le deuxième programme que j'ai appelé "Programme2.cpp"

#include
#include "Programme1.cpp"            // Ici j'inclus le code source de mon premier programme car je voudrais
                                                      // réutiliser la fonction Bonjour dans mon deuxième programme
using namespace std;

int main()

{
    Bonjour();

}

Bon, je voudrais savoir s'il est possible en effet d'inclure Programme1.cpp dans Programme2.cpp et de pouvoir compiler sans que l'éditeur de liens me dise comme quoi la fonction main est redéfinie une deuxième fois.
En fait, je me posais plusieurs questions :

1) Est ce qu'il est possible de faire ce que je viens de faire, en bidouillant le code ?
2) Est ce qu'il est possible de faire autrement, c'est à dire, changer le point d'entrée du programme dans mon deuxième programme pour pouvoir inclure Programme1.cpp ? Mais pour ça je ne sais pas comment faire au niveau de l'éditeur de liens, mais il parait que ça fonctionne alors si vous savez :)

Voilà, j'espère que vous pourrez m'aider, je vous remercie par avance
Bonne journée à tous :)

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
12 juil. 2009 à 17:16
On n'inclut pas des fichiers .cpp. Le code doit être présent une fois seulement dans tout le projet. Pour utiliser une fonction implémentée dans un autre fichier il faut simplement ajouter sa déclaration :

// file1.cpp

void Stub(void)
{
return;
}

// file2.cpp

void Stub(void);

int main(void)
{
Stub();
return;
}


Pour éviter de recopier 50 fois les déclarations, avec risque d'erreurs, on place en général les déclarations dans un header (fichier .h) que l'on inclut partout où on en a besoin.


Quant à changer le point d'entrée du programme c'est possible
(sous VS, #pragma comment(linker,"/entry:") )
mais dans ton cas ce n'est pas ce dont tu as besoin, il te suffit de renommer une des deux fonctions main en autre chose et l'appeler depuis l'autre, de par sa déclaration comme vu.
3
cs_Havy Messages postés 7 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 12 août 2009
12 juil. 2009 à 19:00
Ok merci bien, c'est nikel :)
0