Faccio il mio esempio in C, che mi sembra ancora più semplice di quello di Mitaly
codice:
/* modulo.h */
#ifndef MODULO_H
#define MODULO_H
struct modulo_st {
void (*start)();
void (*stop)();
};
#endif
/* modulo a.c */
#include <stdio.h>
#include "modulo.h"
void a_start()
{
printf("a start\n");
}
void a_stop()
{
printf("a stop\n");
}
struct modulo_st modulo_a = {
a_start,
a_stop
};
/* modulo b.c */
#include <stdio.h>
#include "modulo.h"
void b_start()
{
printf("b start\n");
}
void b_stop()
{
printf("b stop\n");
}
struct modulo_st modulo_b = {
b_start,
b_stop
};
/* main.c */
#include <stdio.h>
#include "modulo.h"
extern struct modulo_st modulo_a, modulo_b;
int main()
{
struct modulo_st *moduli[] = { &modulo_a, &modulo_b, NULL };
int i;
for (i = 0; moduli[i] != NULL; i++)
moduli[i]->start();
for (i = 0; moduli[i] != NULL; i++)
moduli[i]->stop();
return 0;
}