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

Reply via email to