Amélioration de la gestion des dépendances circulaires

This commit is contained in:
2025-02-04 19:27:56 +01:00
parent 0af4eb8f1b
commit 0941b5e09e
19 changed files with 125 additions and 36 deletions

Binary file not shown.

View File

@@ -2,10 +2,10 @@ main: a b c
gcc a b c -o main
a: a.c a.h b.h
gcc -Wall -Werror -Wextra -Pendatic -c a.c -o a
gcc -Wall -Werror -Wextra -ansi -pedantic -c a.c -o a
b: b.c b.h c.h
gcc -Wall -Werror -Wextra -Pendatic -c b.c -o b
gcc -Wall -Werror -Wextra -ansi -pedantic -c b.c -o b
c: c.c c.h a.h
gcc -Wall -Werror -Wextra -Pendatic -c c.c -o c
gcc -Wall -Werror -Wextra -ansi -pedantic -c c.c -o c

View File

@@ -1,3 +1,15 @@
# Test 3 : Dépendances circulaire
# Test 3 : Gestion des dépendances circulaires
## Description
Ce test vérifie que le système de compilation peut détecter et gérer correctement les dépendances circulaires. Il simule un projet où plusieurs fichiers `.c` et `.h` s'incluent mutuellement, créant ainsi une boucle dans les dépendances.
## Fichiers utilisés
- `a.c` : Implémente functionA qui appelle functionB.
- `b.c` : Implémente functionB qui appelle functionC.
- `c.c` : Implémente functionC et inclut a.h, créant une boucle indirecte.
- `a.h`, `b.h`, `c.h` : Fichiers d'en-tête correspondant.
- `Bakefile` : Contient les règles de compilation et les dépendances.
- `bakefile.jar` : Version compilée de notre système de build.
## Résultat attendu
Si le système de build détecte une dépendance circulaire, il doit la gérer automatiquement en évitant la boucle infinie et en compilant correctement les fichiers.

View File

@@ -1,12 +1,12 @@
#include <stdio.h>
#include "b.h"
void functionA() {
printf("Function A called\n");
functionB(); // Appelle une fonction de b.c
void functionA(void) {
printf("Fonction A appelée\n");
functionB();
}
int main() {
int main(void) {
functionA();
return 0;
}

View File

@@ -1,6 +1,6 @@
#ifndef A_H
#define A_H
void functionA();
void functionA(void);
#endif

View File

@@ -1,7 +1,7 @@
#include <stdio.h>
#include "c.h"
void functionB() {
printf("Function B called\n");
functionC(); // Appelle une fonction de c.c
void functionB(void) {
printf("Fonction B appelée\n");
functionC();
}

View File

@@ -1,6 +1,6 @@
#ifndef B_H
#define B_H
void functionB();
void functionB(void);
#endif

View File

@@ -1,7 +1,8 @@
#include <stdio.h>
#include <stdlib.h>
#include "a.h"
void functionC() {
printf("Function C called\n");
functionA(); // Appelle une fonction de a.c -> dépendance circulaire
void functionC(void) {
printf("Fonction C appelée\n");
return;
}

View File

@@ -1,6 +1,6 @@
#ifndef C_H
#define C_H
void functionC();
void functionC(void);
#endif