I'm trying to better understand what is going on behind the Arduino IDE. First off I am no expert in C or writing firmware to boards but do have experience in real development.

I see currently the Arduino IDE is one big vast library we first select our board. What I don't understand is where are our header files? The source files for the board you select?

Not only that we use a number of functions already detected within the IDE where are these located also is any of this code editable?

I had a look through the Arduino directory and most of this stuff looks like its Java I was hoping for C files. Thanks for any links, help or info anyone can give.

  • In IDE, click File, Preference. In 4th line ("Show verbose output during:"), check the "Compilation" box. On the next compile you'll see a lot of the paths. Then turn it back off. Nov 18, 2015 at 4:52

1 Answer 1


Just check the source code. Specifically look at Arduino.h, main.cpp and wiring*.

These files should also be present in the Arduino application folder somewhere, but you'll have to go through quite a few subfolders to find them.

The different boards have different .h file that will specify the pin-numbers and other chip specific data.

The "auto detect" functionality is done by keywords.txt files. At least for libraries. That way if you install a new library with keywords.txt file, the library functions-names are recognized.

The processes of taking all these files, and the users code, and compile it all whole story on it's own.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.