This is really a philosophical question. I could really use the above type of preprocessor statement. If I've #included a file/header/etc in the first program file, I shouldn't have to include that same file in other files, I believe.
I've looked at the #ifdef and #ifndef statments, but these seem geared more towards constants than for #includes (which, I don't think will work).
I've seen something like this in C++:
#include <cstdlib>
#include <iostream>
#include <string>
#ifndef HASH_H
#define HASH_H
Yet, I don't understand how it works, or if it's also useful in C.