1

Est-ce possible d'insérer un fichier C dans un un fichier C comme si le code du premier se trouvait à l'endroit décidé dans le deuxième ?

Comment ?

2

Tu peux utiliser la directive #include "mon_fichier".
Cependant, le C est conçu pour ne pas avoir besoin de faire cela, justement. Chaque fichier .c doit être compilé en un fichier .o et peut fournir un fichier .h permettant à d'autres fichiers .c d'être lié aux .o.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Yamaw (./1) :
Est-ce possible d'insérer un fichier C dans un un fichier C comme si le code du premier se trouvait à l'endroit décidé dans le deuxième ?

Oui, mais ce n'est pas une bonne idée, il vaut mieux que tu maîtrises la compilation séparée, qui est plus intéressante à long terme parce que tu ne dois pas recompiler tout si tu ne changes qu'un fichier.
Comment ?

#include
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

Je doit mettre l'extension ?

5

Oui, tu dois mettre le nom complet du fichier.
(sinon, juste pour savoir, tu as lu le reste de ce qu'on t'a dit ?)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

Oui, mais une fois de plus, apprends plutôt à faire les choses correctement! À mort les #include "foo.c"!

(Raaah, pourquoi Sasume est-il toujours plus rapide d'une minute? sad)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Je doit faire avec des .h alors ?

8

9

Il ne faut surtout pas mettre du code dans les .h!!!

Il faut mettre des prototypes de fonction et des déclarations extern de variables, et définir les fonctions et variables dans le .c correspondant, compilé séparément! (Et en assembleur, les .h ne servent pas du tout parce qu'il n'y a pas de déclarations de type, il faut juste des .s ou .asm séparés là. Mais restons en C pour l'instant.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

11

Mais créée plusieurs fichiers .c, dans le même projet, ils seront compilés dans un seul et même fichier exécutable en sortie. smile



C'est ce j'aurais voulu faire mais cela ne fonctionne pas.

12

Donc je met tout dans le même fichier C ?

13

Qu'est-ce qui ne va pas quand tu sépare ton code en plusieurs fichiers .c ?
Tu as bien écrit les fichiers .h permettant de faire interface entre les différents fichiers .c ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

14

Non.

Donc je doit appeler un fichier h qui appelle le fichier c ?

15

16

bon faisons simple.
Soit un code C divisé en deux fichiers .c : pif.c et hercule.c

pif.c :
#include "hercule.h"

void _main(void)
{
   ...
   hercule1(18);
}


hercule.c
#include "hercule.h"

void hercule1(int blabla)
{
   ...
   // code
}


hercule.h
void hercule1(int blabla); //PAS de code


voilü.

17

Dans "void hercule1(int blabla)", je suis obligé de mettre un int? Sinon : Je peux en mettre plusieurs ? Ou zéro ?

18

Tu peux mettre les paramètres que tu veux, à condition que le prototype dans le .h et l'entête de fonction dans le .c correspondent.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

Autre question : le "hercule1(18);", je peux le mettre dans une boucle ?

20

Merci. Si je veux rien mettre, je met "void" ?

21

Oui et oui.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

22

Bon eh bien je ne sais pas pourquoi cela ne fonctionne pas, alors ...

23

Enfait ça marche ! smile mais une seule fois. Il ne le refait pas chaque fois qu'il passe sur la fonction dans la boucle.

24

Ah voila j'ai compris ce qui n'allait pas : Je pensait que le "#include..." du fichier .c principal, il fallait le mettre tout au dessus avec le "#include <tigcclib.h>" mais enfait non il faut le mettre avec la fonction dans la boucle.

smile

25

Euh non, c'est bien juste après #include <tigcclib.h>, la bonne place. Il ne faut jamais mettre un #include à l'intérieur d'une fonction!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

Ah ??

Mais je l'ai pas mis à l'intérieur de la fonction mais juste avant ...

En tou cas comme ça, ça marche ...



EDIT : Oups exusez moi en fait ça ne marche toujours pas, c'est parce que j'avais transférer le movais fichier sur TIemu ...

27

J'ai bien peur qu'il faudra que tu nous montres la source complète exacte, parce que là je ne vois pas du tout ce que pourrait être ton problème. Et le message d'erreur exact pourrait aussi servir.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

28

Il y a aucun message d'erreur enfait.

29

Bon je vais pas tout remettre mais simplement ce qui est en rapport avec ce problème.

Main.c
#include <tigcclib.h>
#include "Z.h"

void _main(void)
{
...
char b=0;
int x=0,y=0,z=1;
...
while(b==0)
{
...
calcz(x,y);
...
}
...
}




Z.c (entier)
#include "Z.h" 
 
void calcz(int x,int y) 
{
	int z;
	
	if((x==0) && (y==0))
	z=1;
	if((x==17) && (y==0))
	z=2;
	if((y==1) && (x<2))
	z=x+3;
	if((y==1) && (x>9))
	z=x-7;
	if((y==2) && (x<2))
	z=x+11;
	if((y==2) && (x>9))
	z=x+1;
	if(y==3)
	z=x+19;
	if(y==4)
	z=x+37;
	if((y==5) && (x<3))
	z=x+55;
	if((y==5) && (x>2))
	z=x+69;
	if((y==6) && (x<3))
	z=x+87;
	if((y==6) && (x>2))
	z=x+101;
	if(y==8)
	z=x+55;
	if(y==9)
	z=x+87;
	
}




Z.h (entier aussi)
void calcz(int x,int y);

30

(c'est quoi le problème ?)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)