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(); }
Les questions suivantes traitent de la visibilité des variables et fonctions à travers ces 3 fichiers.