Just a quick comment as I'm up to my eyebrows in DIY at the moment!
I wonder what Greensand's target computer is?
Compilers translate code written by humans into instructions understood by a machine. It's a translator. As such, compilers are usually set up to produce instructions for one particular type of computer, and, because operating systems have different interfaces, the compiler is usually limited to work with only one type of CPU and one operating system.
So although I can write a simple C program for Android, Arduino, Apple, STM, Windows and Linux, a different C compiler is required for each, because their hardware and operating systems are different. Machine instructions are as different as Finnish and Swahili! Loading 64 bit Intel machine code into an 8 bit Arduino Nano, or vice versa, won't work, even if the human C source code is identical.
All the earlier suggestions are good provided Greensands wants to write C programs to run on an XP computer. However, if an Arduino microcontroller is the target, only the Arduino-IDE will run on XP and produce instructions for it. If the goal is to program Arduinos, then the Arduino IDE is the best tool. It includes a cross-compiler, i.e. one set up to generate instructions for a different computer to the host. Although many compilers can be configured to cross-compile, it's a lot of hard work, perhaps taking a small team of experts a few months to set up. Much easier to use someone else's work than to roll your own.
Changing the subject slightly, most Arduino tutorials keep it simple by only using C syntax. C is a sub-set of C++, which adds a mass of powerfully complicated rather than user-friendly features. The Arduino compiler is really C++, but it's been stripped down somewhat so as not to generate code too big for a tiny microcontroller. Things like exception handling have been disabled. It's handy to be able to write C++ for the Arduino, but C does everything needed, albeit with a little more typing.
Dave
Edited By SillyOldDuffer on 07/03/2021 08:53:43