Arduino is C and C++ (it is a mix of the two, linked together); there is no "Arduino" programming language
Arduino code is C++. The Arduino core functions are simply a set of C++ classes and libraries you can use. It is built and compiled using the GNU gcc/g++ compiler. Your setup()setup() and loop()loop() functions are simply placed into the mandatory main(meaning: required by both C and C++ in order to even be considered a valid program) main() function (right here actuallyright here actually--notice the file is "main.cpp"main.cpp, which is a C++ source file) automatically for you and there is some extra preprocessing done to make sure it is a valid C++ program (ex: scanning for all function prototypes [aka: declarations] for you so you can use a function even though its prototype comes later in your .ino.ino file). Much of Arduino is written in a "C style"C, however, and therefore requires the # extern "C" {} braces around it to prevent C++ from "name-mangling" (also known as "name decorating/name decoration") function calls to C functions implemented by AVR-libc, which is the C implementation for the ATmega328 and other AVR-architecture microcontrollers.
"Can I program the Arduino board in C?Can I program the Arduino board in C?
In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs supported by avr-g++ should work in Arduino. For more details, see the page on the Arduino build process."
Source: https://www.arduino.cc/en/Main/FAQ#toc13https://support.arduino.cc/hc/en-us/articles/360018448219-Can-I-program-the-Arduino-board-in-C-
Update: Eclipse setup
Update: Eclipse setup
See my answer here and my answerdocument here: What are the other IDEs for Arduino?Eclipse setup instructions on a new Linux (or other OS) computer. I wrote a detailed PDF to describe setup.