A hideous example:
Code:
/* foo.h */
#ifndef FOO_H
#define FOO_H
extern const char foo_version[];
void foo(void);
#endif
Code:
/* foo.c */
#include "foo.h"
const char foo_version[] = "foo v1.0";
void foo(void)
{
}
Code:
/* bar.h */
#ifndef BAR_H
#define BAR_H
extern const char bar_version[];
void bar(void);
#endif
Code:
/* bar.c */
#include "bar.h"
const char bar_version[] = "bar v2.2";
void bar(void)
{
}
Code:
/* baz.h */
#ifndef BAZ_H
#define BAZ_H
extern const char baz_version[];
void baz(void);
#endif
Code:
/* baz.c */
#include "baz.h"
const char baz_version[] = "baz v2.0";
void baz(void)
{
}
Code:
/* main.c */
#include <stdio.h>
#include "foo.h"
#include "bar.h"
#include "baz.h"
int main ()
{
puts(foo_version);
puts(bar_version);
puts(baz_version);
getchar();
return 0;
}
/* my output
foo v1.0
bar v2.2
baz v2.0
*/