מידע

יוצרים François De Keersmaeker
מועד הגשה אין מועד הגשה
מגבלת הגשות אין הגבלה

כניסה

Décomposition d'un programme en modules - Makefile

Soit le programme C définit par les 3 fichiers suivants:

main.c:

#include <stdlib.h>
#include <stdio.h>
#include "module_a.h"
#include "module_b.h"

extern char* str_a;
extern char* str_b;

void func_a() {
  printf("%s\n", str_a);
  printf("%s\n", str_b);
  func_c();
}

int main(int argc, char const *argv[]) {
  func_a();
  func_b();
  func_c();
  return EXIT_SUCCESS;
}

module_a.c:

#include "module_a.h"

char* str_a = "Bonjour";
static char* str_b = "Salut";

static void func_a() {
  printf("%s\n", str_b);
}

void func_b() {
  func_a();
}

static void func_c() {
  printf("Ciao");
}

module_b.c:

#include "module_b.h"

static char* str_a = "Coucou";
char* str_b = "Hello";

static void func_b() {
  static int a = 0;
  int b = 0;
  printf("%s (a = %d; b = %d)\n", str_a, a, b);
  a++;
  b++;
}

void func_c() {
  func_b();
}

שאלה 1: Makefile

Proposez un Makefile qui permette de compiler, simplement avec la commande make, ce programme en un exécutable nommé prog.

Attention: vérifiez que chaque ligne d'une règle commence bien par une indentation, et pas une série d'espaces.

שאלה 2: Make clean

Ajoutez une règle clean, permettant de supprimer tous les fichiers créés par la compiltion, dont l'exécutable, au Makefile de l'exercice précédent.

Soumettez le Makefile complet, pas uniquement la règle clean.

Attention: vérifiez que chaque ligne d'une règle commence bien par une indentation, et pas une série d'espaces.