See http://gcc.gnu.org/ml/fortran/2006-08/msg00145.html
Currently gfortran calls cpp with the option -traditional-cpp. Using this option, newer macros like #define msg(x) print *, #x don't work (the #x causes the argument to be quoted). (See url/email for example.) I couldn't find any standard for fpp. I assume that it is only a Fortran-aware CPP, which is defined in the C99 standard (ISO/IEC 9899:1999, section "6.10.3.2 The # operator"). I would expect that the newer constructs work by default with gfortran, or at least that one can force that mode. The first would simply mean to remove "-traditional-cpp" from the argument list. Other compilers: Sun Studio f95 and Intel Fortran Compiler both support #x by default. g95 and NAGware f95 seem to work as gfortran: msg(test) is converted into print *,#hello -- Summary: fpp call of gfortran: -traditional-cpp versus newer macros like #x Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tobias dot burnus at physik dot fu-berlin dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28662