I'm using Visual Studio 2019 to try and compile the code, but I ran into C2129 static function 'void DEBUGPlatformFreeFileMemory(void *)' declared but not defined in line 100 of handmade.cpp. Line 100 doesn't exist, since the last line of code in that file is line 99. The underlying issue appears that Visual Studio thinks the pieces of code are in different translation units. Visual Studio even allows me to jump to the function declaration in win32_handmade.cpp by crtl+clicking from handmade.h. But GameUpdateAndRender is in a similar situation, and no strange visibility issues occur!
Please see the attached images here .
Removing the internal keyword from handmade.h on those 3 functions appear to allow the code to work with parity with the command-line build and tutorial, but I'm scared to diverge too much from what Casey has with these quick "hacks" for sake of unrecoverable incompatibilities down the line. Still, the question remains on why Visual Studio doesn't see these functions in the same translation unit! VS seems to want to add the macro internal to a "hint file". I've never seen that before, and it seems like some strange visibility issues around that are happening.