Oh my god.
1) You're using C++. Use a constructor, not a free "Create" function.
2) Use the standard library.
3) Why "g_" on a struct member variable? Such a prefix normally indicates globals. Personally I prefer not to use any such tags, but the normal one for struct data members is m_.
4) Why tag your Maze struct with "s"? What else can it be, in context? There's no reason you'd ever have to *know, in calling code*, whether you wrote it as a "struct" or a "class", BTW.
#include "maze.h"char g_maze_data[] = { 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,2,3,3,1,3,3,1,3,3,3,3,1,3,1,3,3,3,3,1,3,3,1,3,3,1,1,1,1,1,3,3,3,1,3,1,3,3,3,1,1,1,1,1,3,3,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,3,3,2,1,1,1,1,3,1,3,3,3,3,3,1,3,1,1,1,1,2,3,3,3,3,3,3,1,3,1,1,1,3,1,1,1,3,1,3,3,3,3,3,0,0,0,0,3,1,3,1,3,1,3,1,3,1,3,1,3,0,0,0,0,0,3,3,3,3,1,3,1,1,1,1,1,1,1,3,1,3,3,3,3,0,0,0,0,0,0,1,3,1,3,3,0,3,3,1,3,1,0,0,0,0,0,0,3,3,3,3,1,1,1,3,0,0,0,3,1,1,1,3,3,3,3,0,0,0,0,0,3,1,3,1,3,3,3,3,3,1,3,1,3,0,0,0,0,3,3,3,3,3,1,3,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,2,1,1,1,1,3,1,3,3,3,3,3,1,3,1,1,1,1,2,3,3,1,3,3,3,1,1,1,1,1,3,1,1,1,1,1,3,3,3,1,3,3,1,1,1,1,1,3,3,3,1,3,1,3,3,3,1,1,1,1,1,3,3,3,1,3,3,1,3,1,1,1,1,1,1,1,3,1,3,3,1,3,3,3,1,1,1,3,1,1,1,3,3,3,3,3,1,1,1,3,1,1,1,3,3,1,3,1,3,1,3,1,1,1,3,1,1,1,3,1,3,1,3,1,3,3,2,1,1,1,1,1,1,3,1,0,1,3,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,};// This part *cannot* be done with an inline function, unfortunately, because// of pointer decay. See the below link for more.#define ARRAY_RANGE(arr) arr, arr + sizeof(arr) / sizeof(arr[0])Maze g_maze(ARRAY_RANGE(g_maze_data));