I noticed that I can't build sha256.c and sha256.h in Windows, because WORD is redefined with different data types.
There is no 32-bit WORD. A WORD is always 16-bit, and a DWORD would be 32-bit.
To fix this issue:
Change
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
To:
typedef unsigned long DWORD;
Then, change all WORD to DWORD in the code.
This does not only affect SHA256, but most of the other files too.