How can I stop #including redundant libraries when I use header files like these?
===

So I'm still getting used to modular programming, and want to make sure I'm adhering to best practices. If I have the two module header files below, will the libraries `#included` by each file (for example "mpi.h") be included multiple times? Is there a proper way to account for this?

Also, my module headers typically look like these examples, so any other criticism/pointers would be helpful.

    /* foo.h */
    #ifndef FOO_H
    #define FOO_H

    #include <stdlib.h>
    #include "mpi.h"

    void foo();

    #endif
and

    /* bar.h */
    #ifndef BAR_H
    #define BAR_H

    #include <stdlib.h>
    #include "mpi.h"

    void bar();

    #endif

And use the sample program:

    /* ExampleClient.c */
    #include <stdlib.h>
    #include <stdio.h>
    #include "mpi.h"
    #include "foo.h"
    #include "bar.h"

    void main(int argc, char *argv[]) {
        foo();
        MPI_Func();
        bar();
        exit(0)
    }