Motivated by http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/d977a668b0316119
Currently, BIND(C, NAME=binding-name) checks for ISALPHA and "_". However, the C standard allows more (from ISO/IEC 9899:1999(E) = C99, Section 6.4.2 Indentifiers): identifier: identifier-nondigit identifier identifier-nondigit identifier digit identifier-nondigit: nondigit universal-character-name <<<<<<<< other implementation-defined characters <<<<<< nondigit: One of _ a b c (...) z A B C (...) Z digit: 0 1 (...) 9 Note the items marked by "<<<<<". I'm not sure whether the current restriction makes any problem in practice, but I could imaging that there is a legitimated use for it, though I could not find a good example. Currently, it is abused to call STDCALL programs which get a "@<n>" appended to the name where "<n>" is related to how much needs to be popped from the stack. The proper solution is to support STDCALL (PR 34112); thus I don't think this is a proper use. Does it make sense to change the error into a warning? Or to allow certain other characters? * * * Seemingly $ is allowed by "gcc -c -std=c99 -Wall -pedantic": void t$FAst(void) { } -- Summary: BIND(C): Allow non-digit/underscore/alphabetic binding names Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38839