Erreurs de programmation

faurof

Membre enregistré
8 Septembre 2004
8
0
37
Je suis vriment le plus débutant qui soit. Je cherche des indications claires pour essayer de résondre les erreurs et les warning suivants :
mac4ever:0: /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h: No such file or directory
mac4ever:0: `-x c-header' after last input file has no effect
mac4ever:0: no input files
Je serais vraiment ravi que quelqu'un puisse m'aider.
Merci
 
bonjour et bienvenue sur pas pas-mac4ever-mais-macgeneration-mais-c-est-pas-grave-on-est-tous-sous-le-meme-pommier :coucou:
quand est ce que cela arrive ?
 
T'es gentil.
Mais que diable allais-je faire dans cette galère. Car mon problème c'est que je suis toujours aussi nul et je n'est toujours pas résoulut mon pb
C'est arrivé hier et depuis je peut même plus révisé mes théorèmes sur les limites de suites :( :(
Au secours!!!
 
faurof a dit:
T'es gentil.
Mais que diable allais-je faire dans cette galère. Car mon problème c'est que je suis toujours aussi nul et je n'est toujours pas résoulut mon pb
C'est arrivé hier et depuis je peut même plus révisé mes théorèmes sur les limites de suites :( :(
Au secours!!!

Bonjour,

Essaie d'etre plus precis, tu compile quoi avec quoi ?

Cordialement
 
Je compile un fichier.c avec Xcode.
Je suis pas sur de répondre exacement à la question que tu me pose parceque je ne connais même pas précisemment les termes de programmation. On peut toujours essayer.
 
Si jamais j'ai un programme c qui marche quand il est compilé avec turbo C++ sur Pc. le code source est le suivant:
#include <stdlib.h>
#include <time.h>

typedef int entier;

char q_multiplication (int rang_fact1, int rang_fact2);

char q_multiplication (int rang_fact1, int rang_fact2)
{
unsigned int fact1, fact2, reponse, ret;
char *rep = (char*)malloc (50*sizeof (char));
randomize ();

rang_fact1++;
rang_fact2++;

fact1 = random (rang_fact1);
fact2 = random (rang_fact2);
printf ("Combien font %d x %d ? ", fact1, fact2);
rep = (char*)gets ();
reponse = atoi (rep);
if (fact1 * fact2 == reponse)
{
printf ("\n\rRÇponse exacte !\n\r");
ret = 1;
}
else
{
printf ("\n\rRÇponse fausse !\n\r");
ret = 0;
}
return ret;
}

int main (int argc, char **argv)
{
unsigned int rang_fact1, rang_fact2, points = 0, q = 0;
char *rep = (char*) malloc (50 * sizeof (char));
int touche = 0;
printf ("Jusqu'Ö quel rang voulez que le facteur 1 puisse aller ? ");
rep = (char*)gets ();
rang_fact1 = atoi (rep);
printf ("Jusqu'Ö quel rang voulez que le facteur 2 puisse aller ? ");
rep = (char*)gets ();
rang_fact2 = atoi (rep);

while (touche != 27 && q != 20)
{
points += q_multiplication (rang_fact1, rang_fact2);
printf ("Points : %d / %d\n\r", points, q);
while (!kbhit ());
touche = getch ();
q++;
}
return 0;
}
Comment je dois faire le plus simplement possible pour pouvoir le compiler avec Xcode (Mac OS x) ? Et comment vérifier les chemins et comment inclure les bibliothèques et pourquoi quand je les recheerchent sur le disque dur les bibliothèques .frameworks ne sont pas là alors que j'ai réussi à faire"add frameworks" et qui sont dans un dossier? Je nage si quelqu'un peut seulement me remonter la tête. Merci
:( :( :( :( :( :( :( :( :( :( :( :(
 
Bonjour,

J'ai put compiler ton source sans trop de probleme.
Tu trouvera le projet complet ici :

http://www.myriad-online.com/perso/publish/Test.zip


La seule modif que j'ai dut faire, c'est redéfinir la fonction random qui sert à autre chose apparemment sur XCode ou alors dont les entrées ne sont pas compatibles.

Je l'ai appellée "alea()" tu n'a plus qu'a la reecrire pour qu'elle fasse ce que tu veux.

Je n'ai put tester le fonctionnement réél du code compilé car, et la c'est vraiment plus grave, ton source n'est pas commenté.

Il ne faut pas oublier qu'un programme c'est des commentaires avec, éventuellement, du code autour...

Si tu as des problemes pour compiler cela, vérifie que tu utilise bien la derniere version d'Xcode, convenablement installée.

Cordialement
 
bah je fais ca à la mano gcc main.c -o testos

j'ai ses 3 méthodes qui sont définies null part

#include <stdlib.h>
#include <time.h>

so quid ?

sinon en créant un framework vide zerolink

en executant j'obtient un seg fault
 
tatouille a dit:
bah je fais ca à la mano gcc main.c -o testos

j'ai ses 3 méthodes qui sont définies null part

#include <stdlib.h>
#include <time.h>

so quid ?

sinon en créant un framework vide zerolink

en executant j'obtient un seg fault

Bonjour,

Il doit te manquer la librairie StdLib dans tes options de liens.
Je te conseille de partir directement du projet XCode dont le lien est donné ci dessus.

Cordialement
 
Comme par hasard ça marche pas avec moi, l'ordinateur me dit lorsque j'ouvre le fichier test.xcode
et que je clique sur build and run il me met deux erreurs ;
main.c:2: time.h: No such file or directory
main.c:1: stdlib.h: No such file or directory

Je suppose qu'il ne trouve pas le chemin mais je ne sais même pas où il va n'y comment changer le chemin.

Si tu pouvais m'expliquer des notions théoriques la-dessus ça m'aiderait bcp.
Merci encore pour ton travail. :confused:
 
Bonjour,

Quand une fonction est appellée depuis un source C, tu as des parametres et une valeur de retour.
Le compilateur doit vérifier que les parametres et le retour sont du bon type.
Pour cela il utilise un fichier texte spécial, un "header", d'extension .h, qui contient toutes les prédéclarations des fonctions.
Ce fichier header contient également les déclarations de constantes, de types, de macros,etc.

Dans le cas que tu présente, il s'agit des prédeclarations des librairies.
Ces fichiers sont installés avec XCode et se trouvent dans "usr/include/library"

Je soupconne que ton XCode est mal installé.

Cordialement
 
Salut à toi oh grand Guillaume

Tu est entrain de me révéler des choses très interéssant mais j'ai de nouvelles questions.
Depuis que ce matin, j'ai installé la version ultérieur de Xcode, le programme que tu m'avais modifié est compilable. Mais il m'affiche au cours de l'execution des messages suspicieux:
warning: this program uses gets(), which is unsafe.
Executable "Test" has exited due to signal 10 (SIGBUS).
Et dans un autre programme que j'ai commencé, il me met:
Dependency analysis: File /Users/xavierfaure/mac4ever/mac4ever.app depends on itself. This target might include its own product

As-tu quelque chose ou explication à m'apporter?

:confused: ;) :)
 
Bonjour,

Quand on dit que le C est un langage portable, cela signifie que la structure du programme (sa syntaxe) sera valide quelque soit le compilateur et la plateforme.
Cependant, un programme appelle généralement des fonctions externes (librairies) et c'est la que le probleme commence.
Ces librairies ne sont pas toutes compatibles entre elles ou présentes sur tous les systemes.
Dans le cas de la fonction gets, son utilisation est déconseillée.
Remplace donc dans le source :

rep = (char*)gets ();
reponse = atoi (rep);

par

scanf("%d",&reponse);

pour chacun des appels à gets.

Cela signifie :
scanf : saisie d'une valeur formatée
"%d" : la valeur est une valeur entiere
&reponse: c'est l'adresse de la variable réponse.

Soit, textuo, saisis une valeur entière au clavier et range la dans la variable "reponse".

Ensuite, je te conseille de reprendre le source depuis le début et de le commenter, tu comprendra mieux ce que cela fait (ou devrait faire)

Je te conseille de suivre cette représentation :

/************************************************************************************
alea
Procure une valeur aleatoire variant de 0 à n
=> n, valeur maximale de l'aleatoire
<= valeur de l'aleatoire
************************************************************************************/
unsigned int alea(int n)
{
int value;

/* Valeur de 0 à 32767*/
value=rand();
/* On rabat la valeur de 0 à n */
value=((long)value*(long)n)/32767L;
/* On retourne la valeur */
return(value);
}

Chaque fonction a une entete expliquant ce qu'elle fait, les parametres recus, les valeurs retournées, etc.


Cordialement