GLuint LoadTexture(char *filename,int textw,int texth);
void DrawTexture(int x, int y, int textw,int texth, GLuint textureid);
No, not quite. (You're looking at "Fixing problem #3". (I think.))
extern SDL_Surface *screen;
extern GLuint menu_image;
When a source file encounters an "extern", it is told that this variable exists, but resides elsewhere. Without the extern, each source file refers to its own version of those variables. When your program is linked, all of the externed variables are hooked up to the (one and only) location.
(Quite a shoddy explanation, but I hope it helps.)
Edited by fastcall22, 18 January 2013 - 05:51 PM.