The standard predefined macros are specified by the C and/or C++ language standards, so they are available with all compilers that implement those standards. Older compilers may not provide all of them. Their names all start with double underscores.
This macro expands to the name of the current input file, in the form of a C string constant. This is the path by which the preprocessor opened the file
the short name specified in #include or as the input file name argument
. For example, "/usr/local/include/myheader.h" is a possible expansion of this macro.