Hi,
Something relatively new in the arduino world is ability for auto protoype of functions with user types. The arduino solution is a step in the right direction but still prone to issue which arduino will improve sometime. Until then, in Visual Micro, you need to add your own prototypes for functions that use "user types" as shown below. This only applies to .ino code, in .cpp code you would always need to create prototypes in both arduino ide and visual micro.
Examples. It's easier when you post that you post link to your code or the example you have used for your code. The link you posted to a library is not so useful. For compile errors it is also useful to switch on the verbose option on the vmicro menu and also useful to enable "show build properties". With these options ON you can then submit the build output with your reports so that you do not need to bother explaining which ide, board and tool chain you are using.
In this case I guessed the project code you are using is
this code?
In the code you can see GetSquares is passed a user type called Block which is created earlier in the same .ino code. In this case we can simply add a prototype as follows. Notice a prototype is simply the same as the method signature but ending with ; and containing no code....
bool GetSquares(Block block, Point pos, int rot, Point* squares);
//========================================================================
bool GetSquares(Block block, Point pos, int rot, Point* squares) {
//code here
}
In your Tetris code there are only three methods that use "user types", therefore inserting the prototypes between where the user types are created and where the functions are located is quite easy. keep in mind this is standard c++ so we are not making something that will break with other compilers.
bool GetSquares(Block block, Point pos, int rot, Point* squares);
void GetNextPosRot(Point* pnext_pos, int* pnext_rot);
void ReviseScreen(Point next_pos, int next_rot);