The specific chip is irrelevant to the discussion. We were talking about how to open the Arduino code in Microchip studio.
My experience (limited) with the Studio "Import Arduino Sketch" is that it works pretty well for Official AVR-based Arduino boards, but is pretty questionable on the SAMD boards (even the Arduino official SAMD boards.) And it may be pretty hopeless on 3rd party boards/packages :-(
AFAIK, this feature was added to Studio back during the infancy of the current Board and Library management system, and has not been very actively maintained :-(
I don'n know C++ yet so have some books on the way
Unfortunately, most C++ books are likely to send you off in unproductive directions, if your goal is to understand Arduino/embedded C++.
(Not unlike C books, if you want to write embedded C.)
I believe one of the big potential pitfalls of the Arduino is that it tries to have a uniform usage on many different micro controllers.
Silly me. I thought platform independence was a good thing, most of the time.
// Arduino.h should properly define PROGMEM, PGM_P, strcpy_P, pgm_read_byte, pgm_read_ptr
PROGMEM, strcpy_P, etc, are the special functions for AVR's Harvard architecture to access data in flash memory. They're completely unnecessary on ARM CPUs, but it "would be nice" for them to be aliased for backward compatibility. Many Arduino non-AVR platforms do that.
// if any this becomes unnecessary as platforms improve, please send a pull req.
"Pull Request" is a github thing. This is approximately "if you fix this, let us know what you did."
there does not seem to be a well defined way to have a program in multiple files in the arduino "IDE".
There is, although I don't know whether the Microchip Studio continues to follow it.
Multiple .ino files are concatenated into a single file, which then goes through arduino "pre-processing" to generate prototypes and derive library paths.
Assembler, C and C++ (.S, .c, .cpp) files are compiled individually and "normally"; that means they need their own prototypes to allow forward references, plus "extern" declarations (even in the .ino files), and probably at least "#include <Arduino.h>" to pull in the Arduino definitions.
So you can split a .ino file into multiple .ino files relatively easily, but extracting some of the code into .cpp files will require more effort.