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

  FORUM HardWare.fr
  Programmation
  C

  fonction en c sous sun

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction en c sous sun

n°687246
yartempion
Posté le 30-03-2004 à 12:39:16  profilanswer
 

Bonjour.
Je suis en train de me former en c, je travaille actuellement sur les declaration de fonction. Sous linux tvb quand on fait des passage de parametre par adresse (pointeurs). Mais quand on passe sous sun ca ne marche pas de la meme maniere. On ne peut pas associer un type a un parametre. Exp:
Sous linux
#include<stdio.h>
void toto(int a,short *b)
main
{
declarations et instructions
 
}
void toto(int a,short *b)
{
idem
}
si on applique le meme principe sous sun ca ne marche pas.
Pourquoi?

mood
Publicité
Posté le 30-03-2004 à 12:39:16  profilanswer
 

n°687250
jagstang
Pa Capona ಠ_ಠ
Posté le 30-03-2004 à 12:42:59  profilanswer
 

la déclaration du prototype (void toto en haut) doit être suivie d'un ;
 

n°687284
Taz
bisounours-codeur
Posté le 30-03-2004 à 13:08:06  profilanswer
 

int main() :o

n°687594
yartempion
Posté le 30-03-2004 à 17:26:53  profilanswer
 

Taz a écrit :

int main() :o


Merci de me le rappeler mais ce n'est pas ce petit(;) qui est la cause de mon probleme le compilateur m'aurai envoye un message comprehensible. Voici mon bout de code plus detaille:
#include<stdio.h>
#include<stdlib.h>
#define ESC 27
void fill(short *a,unsigned n);/*ici sur sun les arguments sont refuses*/
main()
{
short num[80];
unsigned x,y,seed;
int rep;
do
{
   printf("\nle programe produit des nombres aleatoires" );
   srand(++seed);
   if (seed>65534)
     seed=0;
fill(num,80);
rep=getchar();
}while(rep!=ESC);
void fill(short *a,unsigned n)/*ici le types des arguments est refuses*/
{
 unsigned i;
  for(i=0;i<n;i++)
   {
   a[i]=rand();/*ici le systeme m'indique qu'il y a une incompatibilite entre le parametre passe et l'affectation*/ :non:  :non:  
   printf("\nvaleur %d = %d",i,a[i]);
   }
}

n°687601
yartempion
Posté le 30-03-2004 à 17:29:14  profilanswer
 

Taz a écrit :

int main() :o


Merci de me le rappeler mais ce n'est pas ce petit(;) :)  qui est la cause de mon probleme le compilateur m'aurai envoye un message comprehensible. Voici mon bout de code plus detaille:
#include<stdio.h>
#include<stdlib.h>
#define ESC 27
void fill(short *a,unsigned n);/*ici sur sun les arguments sont refuses*/ :non:  :non:  
main()
{
short num[80];
unsigned x,y,seed;
int rep;
do
{
   printf("\nle programe produit des nombres aleatoires" );
   srand(++seed);
   if (seed>65534)
     seed=0;
fill(num,80);
rep=getchar();
}while(rep!=ESC);
void fill(short *a,unsigned n)/*ici le types des arguments est refuses*/ :non:  
{
 unsigned i;
  for(i=0;i<n;i++)
   {
   a[i]=rand();/*ici le systeme m'indique qu'il y a une incompatibilite entre le parametre passe et l'affectation*/ :non:  :non:  
   printf("\nvaleur %d = %d",i,a[i]);
   }
}

n°687607
Taz
bisounours-codeur
Posté le 30-03-2004 à 17:30:56  profilanswer
 

n'importe quoi ton srand
 
 
une fois pour toute en début de programme
 
srand(time(NULL));
 
et après, autant de rand() que tu veuxs

n°687650
yartempion
Posté le 30-03-2004 à 17:48:14  profilanswer
 

Taz a écrit :

n'importe quoi ton srand
 
 
une fois pour toute en début de programme
 
srand(time(NULL));
 
et après, autant de rand() que tu veuxs


Le probleme ne vient pas du srand mais des parametres lies a la fonction que je ne sais pas declarer sous sun, ton message ne repond pas à ma question.

n°687657
Taz
bisounours-codeur
Posté le 30-03-2004 à 17:51:49  profilanswer
 

en tout cas tu sais pas te servir de srand. et t'as un compilo de merde

n°687665
yartempion
Posté le 30-03-2004 à 17:56:22  profilanswer
 

Taz a écrit :

en tout cas tu sais pas te servir de srand. et t'as un compilo de merde


Mon compilo est tout ce qu'ily a de plus correct puisque fourni par sun hp et essaye de te concentreer sur le probleme et pas à coté. Tu me fais perdre du temps avec tes remarques inutile qui ne font pas avances les choses.

n°687668
Taz
bisounours-codeur
Posté le 30-03-2004 à 17:58:32  profilanswer
 

dis moi l'idiot du village, t'es sur que t'as pas déjà une fonction sysètme qui s'appelle fill ? tu pourrais pas lire tes message d'erreur. rand renvoie un int, et toi tu veux le mettre dans un short, ça gueule ?

mood
Publicité
Posté le 30-03-2004 à 17:58:32  profilanswer
 

n°687690
yartempion
Posté le 30-03-2004 à 18:15:54  profilanswer
 

Taz a écrit :

dis moi l'idiot du village, t'es sur que t'as pas déjà une fonction sysètme qui s'appelle fill ? tu pourrais pas lire tes message d'erreur. rand renvoie un int, et toi tu veux le mettre dans un short, ça gueule ?


Etre vulgaire ne fera pas non plus avancer plus vite mais visiblement tu as l'air de connaitre le sujet alors continuons.
Je ne vois pas trop ce que tu veux dire.
je fait un a[i]=rand(); et dans ma fonction fill j'ai declare  le parametre short *a donc ils sont du meme type, et plus haut quant j'appel ma fonction c'est avec le parametre num qui est aussi un short. Essaye de detailler un peu plus.

n°687695
Taz
bisounours-codeur
Posté le 30-03-2004 à 18:19:58  profilanswer
 

doone les messages de ton comilo :o

n°688069
matafan
Posté le 31-03-2004 à 03:43:19  profilanswer
 

Je suis pas sûr d'avoir compris ton problème mais certains vieux compilos C (K&R)  ne veulent pas du nom des arguments dans les déclarations. Bref au lieu de faire

Code :
  1. void fill(short *a, unsigned n);


tu peux essayer de faire

Code :
  1. void fill(short *, unsigned);


Mais donne les messages d'erreur comme Taz l'a demandé.

n°688803
yartempion
Posté le 31-03-2004 à 18:38:40  profilanswer
 

matafan a écrit :

Je suis pas sûr d'avoir compris ton problème mais certains vieux compilos C (K&R)  ne veulent pas du nom des arguments dans les déclarations. Bref au lieu de faire

Code :
  1. void fill(short *a, unsigned n);


tu peux essayer de faire

Code :
  1. void fill(short *, unsigned);


Mais donne les messages d'erreur comme Taz l'a demandé.


Sous sun visiblement le compilateur est different pour les parametres de fonctions. Ond oit stipuler le type des parametres en dehors des parentheses de la fonction mais le nom à l'interieur:
void fill(a,b)
short a[],b;/*la variable a et le pointeur a[] sont une seule et meme variable parcequ'elles portent le meme nom*/
{/*A partir de l'accolade on declarera des variable locales avec leurs types et nom*/
=
Ensuite contrairement a ce que m'a dit taz on peut sous sun ranger dans un short une valeur int renvoyee par la fonction rand().

n°688808
Taz
bisounours-codeur
Posté le 31-03-2004 à 18:40:59  profilanswer
 

super, on a un gogo qui récupère un compilateur pré-ansi et il nous soutient qu'il est pas pourri ...
 

Citation :

Ensuite contrairement a ce que m'a dit taz on peut sous sun ranger dans un short une valeur int renvoyee par la fonction rand().

j'ai dit qu'on peut pas bourrer un int dans un short sans problème (cf ariane qui fait boom) :o

n°688838
yartempion
Posté le 31-03-2004 à 19:04:19  profilanswer
 

Taz a écrit :

super, on a un gogo qui récupère un compilateur pré-ansi et il nous soutient qu'il est pas pourri ...
 

Citation :

Ensuite contrairement a ce que m'a dit taz on peut sous sun ranger dans un short une valeur int renvoyee par la fonction rand().

j'ai dit qu'on peut pas bourrer un int dans un short sans problème (cf ariane qui fait boom) :o


Qu'entends par pre-ansi, en ce qui concerne le compilateur qu'il'y a sous sun certaines conversion de type se font automatiquement.
Merci a tous de m'avoir aide.
A+

n°688849
Taz
bisounours-codeur
Posté le 31-03-2004 à 19:15:12  profilanswer
 

pré-ansi ? ben on va dire antédéluvien. on va dire 89, mais il y avait déjà une certaine convergence des dialectes avant.
 
ton compilateur fait rien d'autres que fermer sa gueule, c'est tout, mais la conversion int -> short est dangereuse pas nature


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

  fonction en c sous sun

 

Sujets relatifs
probleme de passage de fonction en parametres[IIS6] comment desactiver la fonction de cache ???
[JS]Fonction qui marche une fois, pas deux.aidez moi a comprendre cette fonction
une tableau qui s'actualise tout seul en fonction de choix,fonction char -> bool
Fonction Case en batch[Perl] Fonction find, en plus d'utilisation de simili-objet
Fonction associée à la croix pour fermerFonction java
Plus de sujets relatifs à : fonction en c sous sun


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