How is one supposed to find the file in which those things are defined?
I am asking this as a general question in the hope that someone will explain the process for finding the definitions. While finding the file for those specific definitions would help, I suspect there are dozens of others that I will need to find.
This is something I have always struggled with in C/C++. When I was using Ruby I rarely had any trouble finding where functions etc were defined.
The answer is "with difficulty". Finding those things requires understanding something about the (rather complex) Arduino build system. For non-AVR boards, like the ESP, the "hardware dependent" files will be found somewhere down the "C:\Users\username\AppData\Local\aruino15\packages path.
For large software projects (like the Arduino IDE itself), there are the Gnu ID Utils and eTags. These are faster than grep, but unlikely to climb up through the
"system level" include files unless you build their databases very carefully.
Running the compile command with -E to generate pre-processor output will give you a list of all the included files, though it may not be recognizable enough to find a particular definition. (It's more useful for finding things to use as "." in those grep/find commands...)
One problem I noticed while searching was that one search term came up with 78 files that contained the word. That's not a lot better than telling me it is "somewhere on my hard disk"
It'd be nice if there was a hard-disk equivalent of Google to prioritize the found files.
I use Eclipse IDE and there is it very easy with F3 to go right to the declaration of the symbol. It opens the source file and selects the file in the source file tree.