Why do that? In fact why not change main.cpp from:
#include <WProgram.h>
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
to:
void init ();
void setup ();
void loop ();
int main(void)
{
init();
setup();
while (true)
loop();
return 0;
}
Then it compiles on its own without any header files, and will only be used if the user doesn't supply their own main function.