Nick, the post you have linked (http://arduino.stackexchange.com/questions/13178/classes-and-objects-how-many-and-which-file-types-do-i-actually-need-to-use-the/13182#13182) is amazingly detailed and unbelievably helpful!
I have these questions:
Do you have a similar reference for the “build process” itself? For example, it is clear that at the point of your third bullet point there is a “temporary compilation folder”. What is the program that actually builds it?
It must be a C++ compiler (like gcc). I googled this and found: " is passed directly to a C/C++ compiler (avr-g++)."
Is it avr-g++ in every case? Or can other compilers be used at this step?
I find it extremely hard to understand why the 2000 words in your write-up and linked “more information” do not mention avr-g++ even a single time, if, in fact, it is the compiler actually used after the above compilation steps in every case.
Here are more questions:
→ If I manually performed the steps 1-10 could I then pass them to avr-G++ myself and receive a compiled program? Why or why not?
→ What is avr-g++ (Google search “what is avr-g++”)?
People are accusing me of not googling. The first Google result is “avr-g++: command not found” while compiling, using Arduino IDE 1.6". It does not say what avr-g++ is.
The second link is “c++ - Using Arduino Libraries with AVR-G++ - Stack Overflow” and writes “Is there a simple way to use libraries intended for the Arduino IDE with the C and assembly code I write for AVR-G++/AVR-GCC?” and does not define what AVR-G++ is.
The third link is bizarre and seems to be a man page for gcc. Does the Arduino just use gcc directly?
If so why can’t people just use gcc directly, after performing steps 1-10 from your write-up?
Why aren’t there more Arduino-templating-language compatible IDE’s other than the Arduino IDE, if we define the Arduino-templating-language as simply meaning “perform steps #1-#10 to receive C++ files ready to hand off to gcc”?
C++ is a standard language based on standards. It is not considered standard to be able to compile it using only a single compiler. Why can’t other compilers be used, other than gcc (if indeed that is what is being used)?
For example, an alternative to gcc is clang (LLVM). If I personally perform steps 1-10 can I just pass it off to clang? Why or why not?
Finally, based on the fact that steps 1-10 are performed how would you feel about my using the nomenclature “Arduino templating language” or to be more explicit “Arduino C++ templating language” which would make it clear that:
1: Code produced in the Arduino templating language is not ready to be passed on to GCC directly. There is a bit of translationn involved.
2: It is a light translation that results in C++ code that is ready to be passed to the compiler.
[I rejected this possibility.]
This would make it clear that while a “templating language” Arduino qua language is essentially C++. The only thing that makes it a (templating) “language” as opposed to wizard, is that it is written in text form, rather than by clicking buttons in a wizard. [rejected]
Would this usage be accurate? Thank you.
Example of usage
“I have an Arduino that I program in Arduino using Arduino”.
“I have an Arduino-compatible board, that I program in the Arduino
templating language, using the Arduino IDE”. In other words, “Arduino language” should be written “Arduino templating language” or “Arduino C++ templating language.” [rejected] It would make it clear that it is a templating language that simply “turns into” C++ after steps 1-10 are performed. [rejected]