First, the problem. Sample program:

    #include <ctype.h>
    int main(void) { return 0; }

% g++ -c bug.cxx
In file included from
/opt/gcc--4.3.3--tru64/bin/../lib/gcc/alphaev56-dec-osf4.0g/4.3.3/include-fixed/sys/localedef.h:76,
                 from /usr/include/ctype.h:108,
                 from bug.cxx:1:
/opt/gcc--4.3.3--tru64/bin/../lib/gcc/alphaev56-dec-osf4.0g/4.3.3/include-fixed/sys/lc_core.h:201:
error: 'regex_t' has not been declared
/opt/gcc--4.3.3--tru64/bin/../lib/gcc/alphaev56-dec-osf4.0g/4.3.3/include-fixed/sys/lc_core.h:202:
error: expected ',' or '...' before '*' token
/opt/gcc--4.3.3--tru64/bin/../lib/gcc/alphaev56-dec-osf4.0g/4.3.3/include-fixed/sys/lc_core.h:203:
error: expected ',' or '...' before '*' token
/opt/gcc--4.3.3--tru64/bin/../lib/gcc/alphaev56-dec-osf4.0g/4.3.3/include-fixed/sys/lc_core.h:204:
error: 'regex_t' has not been declared

Normally, lc_core.h #includes reg_types.h, which has the regex_t typedef, and
all is well. Here, however, it pulls in the fixincluded version of reg_types.h,
which typedefs __regex_t, not regex_t.

This is not a problem for [the fixincluded] regex.h, since right after it
#includes reg_types.h, it typedefs __regex_t to regex_t. Anything else that
uses reg_types.h expecting to get regex_t, however, is left in the lurch.


-- 
           Summary: Fixincluded header defines __regex_t, other header needs
                    regex_t
           Product: gcc
           Version: 4.3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: skunk at iskunk dot org
 GCC build triplet: alphaev56-dec-osf4.0g
  GCC host triplet: alphaev56-dec-osf4.0g
GCC target triplet: alphaev56-dec-osf4.0g


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39788

Reply via email to