Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1101 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Un prog en C compilé sous Linux sera-t-il executable sous NT ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un prog en C compilé sous Linux sera-t-il executable sous NT ?

n°123336
seb31
Un lapin a tué un chasseur
Posté le 08-04-2002 à 19:16:08  profilanswer
 

that the question :??:


---------------
http://forum.aceboard.net/forum1.p [...] login=1408les amis de seb31
mood
Publicité
Posté le 08-04-2002 à 19:16:08  profilanswer
 

n°123338
Jar Jar
Intaigriste
Posté le 08-04-2002 à 19:19:38  profilanswer
 

Mais bien sûr !!!!! Dans du papier alu !


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123340
Jar Jar
Intaigriste
Posté le 08-04-2002 à 19:20:29  profilanswer
 

Plus sérieusement, va faire un tour sur http://www.cygwin.com/
Tu y trouveras un environnement de développement UNIX par-dessus Windows, permettant de compiler la plupart des applications qu'on trouve sous GNU/Linux.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123341
Raph2209
poooooowaaaaaaaa !
Posté le 08-04-2002 à 19:31:35  profilanswer
 

je crois que non : car le C ne peux tourné que sur l'os sur lequel il a ete compille :
pas de log C windows sur un mac (la gestion du processeur est !=)

n°123343
Jar Jar
Intaigriste
Posté le 08-04-2002 à 19:35:23  profilanswer
 

raph2209 a écrit a écrit :

je crois que non : car le C ne peux tourné que sur l'os sur lequel il a ete compille :
pas de log C windows sur un mac (la gestion du processeur est !=)


Là c'est encore pire, car ce n'est pas le même processeur.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123351
seb31
Un lapin a tué un chasseur
Posté le 08-04-2002 à 20:00:13  profilanswer
 

don la solution universelle  c'est de compiler le source sur l'OS cible :??:


---------------
http://forum.aceboard.net/forum1.p [...] login=1408les amis de seb31
n°123369
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 08-04-2002 à 21:11:30  profilanswer
 

seb31 a écrit a écrit :

don la solution universelle  c'est de compiler le source sur l'OS cible :??:  




 
bien sûr que oui seb31 !!! tu le savais pas ???
c'est ce qu'on apprends en premier, non ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
n°123382
seb31
Un lapin a tué un chasseur
Posté le 08-04-2002 à 21:48:20  profilanswer
 

juju_le_barbare a écrit a écrit :

 
 
bien sûr que oui seb31 !!! tu le savais pas ???
c'est ce qu'on apprends en premier, non ?  




si je savais :d


---------------
http://forum.aceboard.net/forum1.p [...] login=1408les amis de seb31
n°123423
gilou
Modérateur
Modzilla
Posté le 09-04-2002 à 05:50:59  profilanswer
 

seb31 a écrit a écrit :

don la solution universelle  c'est de compiler le source sur l'OS cible :??:  




Pas necessairement si tu as un cross-compiler.
C'est de compiler le source pour l'OS cible.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°123468
Babekiller
Posté le 09-04-2002 à 10:04:38  profilanswer
 

Non !
 
Voilà un réponse simple... :D

mood
Publicité
Posté le 09-04-2002 à 10:04:38  profilanswer
 

n°123659
cooltwan
Posté le 09-04-2002 à 15:29:20  profilanswer
 

si tu veux faire des applis portables y a un truc pas mal qui se nomme java ... :)

n°123665
darklord
You're welcome
Posté le 09-04-2002 à 15:34:01  profilanswer
 

cooltwan a écrit a écrit :

si tu veux faire des applis portables y a un truc pas mal qui se nomme java ... :)  




 
depuis que ca existe les gens ont tendances à oublier que tout les languages ne sont pas portables comme l'es Java (enfin plus ou moins, inutile de lancer une polémique sur l'implémentation des JVMs)


---------------
Just because you feel good does not make you right
n°123691
ddr555
Posté le 09-04-2002 à 16:12:55  profilanswer
 

cooltwan a écrit a écrit :

si tu veux faire des applis portables y a un truc pas mal qui se nomme java ... :)  



spa du code exécutable du java, mais du pseudo code, c'est la jvm qui fait tout le reste  :D

n°123732
skaska
Posté le 09-04-2002 à 17:31:27  profilanswer
 

juju_le_barbare,
Je sais pas si c'est délibéré ou pas mais y'a une grosse erreur dans le code C de ta signature ;)
a+

 

[jfdsdjhfuetppo]--Message édité par skaska--[/jfdsdjhfuetppo]

n°123744
Jar Jar
Intaigriste
Posté le 09-04-2002 à 17:56:26  profilanswer
 

skaska a écrit a écrit :

juju_le_barbare,
Je sais pas si c'est délibéré ou pas mais y'a une grosse erreur dans le code C de ta signature ;)


Y'a surtout une faute dans le nom de l'auteur de la citation, si je ne m'abuse.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123783
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 09-04-2002 à 19:17:29  profilanswer
 

Jar Jar a écrit a écrit :

Y'a surtout une faute dans le nom de l'auteur de la citation, si je ne m'abuse.  




Pq d'après toi elle vient de qui ???
 
skaska : Le seul message que tu dise, c'est que je me trompe ??? ke t'e sméchant ;)
Nan je déconne, mais où est le pb ??? c'est du C++ pas du C, je vois pas d'erreur, dsl, si yen a dis le moi !!!


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
n°123785
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 09-04-2002 à 19:19:57  profilanswer
 

Je viens de le compiler, et comme prévu pas d'erreur.
p e qu'en C c'est pas juste, mais en C++ si ...
 
@++ :hello:


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
n°123789
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-04-2002 à 19:28:54  profilanswer
 

juju_le_barbare a écrit a écrit :

 
Pq d'après toi elle vient de qui ???




 
D'un gars qui avait presque le même nom que celui que tu cites:
Linus Torvalds


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°123797
koulip31
Posté le 09-04-2002 à 19:46:49  profilanswer
 

cooltwan a écrit a écrit :

si tu veux faire des applis portables y a un truc pas mal qui se nomme java ... :)  




 
[TROOL] Suxxx le java ....... Roxe le Perl !!!!!!  :D  [/TROOL]

n°123806
skaska
Posté le 09-04-2002 à 20:03:46  profilanswer
 

juju_le_barbare a écrit a écrit :

 
Pq d'après toi elle vient de qui ???
 
skaska : Le seul message que tu dise, c'est que je me trompe ??? ke t'e sméchant ;)
Nan je déconne, mais où est le pb ??? c'est du C++ pas du C, je vois pas d'erreur, dsl, si yen a dis le moi !!!  




 
Il n'y'a effectivement pas d'erreur de syntaxe c'est pour ca que ca compile, mais il reste que ta fonction est gravement buguée en C comme en C++, par la pire chose qu'on puisse faire, car très dur a detecter sur des gros programmes(car le programme peut très bien marcher un jour et ne plus marcher le lendemain, tu vas comprendre avec les explications).
 
Donc voilà le pb : tu retournes bien un pointeur vers une chaine de caractère, mais malheureusement cette chaine étant une variable locale a ta fonction, il n'y'a aucune raison que cette chaine soit encore là après l'appel de la fonction. Le système s'autorise a ecrire des choses par dessus si ce là lui plait. Ce qui explique que ton programme à l'air de marcher puisque tu as la chance que rien ne vienne l'écraser, mais faut faire très gaffe a ca car c'est pas du tout une manière correcte de coder!
 
C'est comme si tu faisait :
int *ma_fonction() {
  int i=10;
  return &i;
}
 
Tu retournes l'adresse ou etait stockée la valeur de i mais manque de bol a la fin de la fonction i n'existe plus, mais si tu croises les doigts effectivement peut etre que à l'adresse que tu retournes tu obtiendras un bon résultat... mais montre ca à n'importe quel prof de C(ou C++ si tu veux) il va sursauter.
 
Donc en bref si tu veux que ce soit ok il faut faire utiliser un malloc pour allouer de l'espace pour une chaine de caractère, et comme la mémoire allouée par les malloc n'est liberéé qu'avec un free, tu es sur qu'a l'adresse il y'aura toujours ta chaine.
Mais bon après c'est sur que c'est moins compact pour rentrer dans une signature...  
 
Oui c'était mon premier message car désolé mais quand j'ai vu ca j'étais horripilé, et obligé de m'inscrire pour rectifier ca :p
 
a+

n°123834
Kristoph
Posté le 09-04-2002 à 21:07:11  profilanswer
 

Perdu, le return "aaa"; est parfaitement valide parceque tu retournes un pointeur vers une chaine statique, en fait le vrai problème c'est que c'est un const char * et non pas un char * comme l'attend ta fonction.

n°123836
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 09-04-2002 à 21:13:02  profilanswer
 

skaska a écrit a écrit :

 
 
Il n'y'a effectivement pas d'erreur de syntaxe c'est pour ca que ca compile, mais il reste que ta fonction est gravement buguée en C comme en C++, par la pire chose qu'on puisse faire, car très dur a detecter sur des gros programmes(car le programme peut très bien marcher un jour et ne plus marcher le lendemain, tu vas comprendre avec les explications).
 
Donc voilà le pb : tu retournes bien un pointeur vers une chaine de caractère, mais malheureusement cette chaine étant une variable locale a ta fonction, il n'y'a aucune raison que cette chaine soit encore là après l'appel de la fonction. Le système s'autorise a ecrire des choses par dessus si ce là lui plait. Ce qui explique que ton programme à l'air de marcher puisque tu as la chance que rien ne vienne l'écraser, mais faut faire très gaffe a ca car c'est pas du tout une manière correcte de coder!
 
C'est comme si tu faisait :
int *ma_fonction() {
  int i=10;
  return &i;
}
 
Tu retournes l'adresse ou etait stockée la valeur de i mais manque de bol a la fin de la fonction i n'existe plus, mais si tu croises les doigts effectivement peut etre que à l'adresse que tu retournes tu obtiendras un bon résultat... mais montre ca à n'importe quel prof de C(ou C++ si tu veux) il va sursauter.
 
Donc en bref si tu veux que ce soit ok il faut faire utiliser un malloc pour allouer de l'espace pour une chaine de caractère, et comme la mémoire allouée par les malloc n'est liberéé qu'avec un free, tu es sur qu'a l'adresse il y'aura toujours ta chaine.
Mais bon après c'est sur que c'est moins compact pour rentrer dans une signature...  
 
Oui c'était mon premier message car désolé mais quand j'ai vu ca j'étais horripilé, et obligé de m'inscrire pour rectifier ca :p
 
a+  




 
yeah cool la réponse !!! une inscription pour me le dire c'est sympa ;)
 
Donc après rectifications, ma signature, c'est :
 
 
char *rep; //variable globale
char *Test() //fonction de test
{
if (juju_le_barbare->Barbare)
  rep = "Parfait !!!";
else
  rep = "Erreur !";
return rep;
}
"Software is like sex, it's better when it's free"
--Linus Torvalds--
 
 
Je n'ai pas utilisé malloc, car c'est du C et je ne connais pas.
J'ai retourné l'adresse d'une variable globale, rep.
Le code est bon ?
PS : j'ai compris l'explication.
New appelle delete lorsque la fonction se termine, c'est juste ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
n°123853
skaska
Posté le 09-04-2002 à 21:51:25  profilanswer
 

juju_le_barbare a écrit a écrit :

 
 
char *rep; //variable globale
char *Test() //fonction de test
{
if (juju_le_barbare->Barbare)
  rep = "Parfait !!!";
else
  rep = "Erreur !";
return rep;
}
 
Je n'ai pas utilisé malloc, car c'est du C et je ne connais pas.
J'ai retourné l'adresse d'une variable globale, rep.
Le code est bon ?
PS : j'ai compris l'explication.
New appelle delete lorsque la fonction se termine, c'est juste ?  




 
Euh non pas vraiment :p
En fait ce qui pose problème c'est pas le pointeur qui contient l'adresse de retour, mais le contenu pointé par cette adresse, c'est à dire les chaines :
"Parfait !!!" et "Erreur !"
Elles sont stockées en mémoire dans ta fonction mais y'a pas de raison qu'elles le restent après l'appel a ta fonction, et donc le pointeur de retour qui pointe bien au bon endroit débouche directement vers un endroit qui n'est plus protégé par ton programme (d'ou le risque que la chaine se fasse écraser-> sous linux généralement ca donne presque a coup sur un segmentation fault)
Donc disons y'a plusieurs méthodes plus ou moins simples:
-En C++ tu as surement une classe String qui doit etre plus pratique que faire des malloc sur des char *
-Ou alors tu utilises malloc (ca m'étonne que ca existe pas en C++ car je vois pas a quoi serviraient les pointeurs, enfin bon je suis pas un pro de c++)
-Ou bien tu crée deux tableaux statiques globals de char qui contiennent tes deux chaines et tu renvois leur référence selon le cas où tu te trouves(assez crados de chez crados).
-Ou bien, le mieux je pense, et qui pourrait en plus bien passer en signature, c'est de faire :
 
int Test()
{
if (juju_le_barbare->Barbare)
return PARFAIT;
else
return ERREUR;
}
 
Et là c'est plus mieux (on supposera que PARFAIT et ERREUR sont définis avec le préprocesseur : #define )
 
Note au passage que t'as pas besoin de else non plus
 
int Test()
{
if (juju_le_barbare->Barbare)
return PARFAIT;
 
return ERREUR;
}

n°123862
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-04-2002 à 22:11:01  profilanswer
 

Sa signature en Pascal d'avant était quand même plus pratique.
Là au moins Result := 'Parfait'; c'était valide :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Un prog en C compilé sous Linux sera-t-il executable sous NT ?

 

Sujets relatifs
démarrer en prog (orientée jeux/3D)[java] comment installer le sdk 1.4 sous linux ?
Utiler delphi pour creer base de donnée, puis faire un prog ...[java/linux] un bon IDE pour java sous linux ... !
QQun veut il porter NETI sous Linux ?verouillage clavier dans prog sous vb
[LINUX] Lancement automatique via url (protocol)[C/C++] Mémoire totale du PC sous Linux !
[openGL] pourquoi mon petit prog marche pas ?du PHP compilé ca existe?
Plus de sujets relatifs à : Un prog en C compilé sous Linux sera-t-il executable sous NT ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR