
Thanks for the report. One more gcc extension we need to cover. Cheers, Manuel Will Thompson:
Ahoy,
I am writing bindings for a library which includes regex.h from libc6 (version 2.6.3-3 in Debian). c2hs 0.14.5 refuses to parse regex.h as follows:
% c2hs Regex.chs c2hs: Error in C header file.
/usr/include/regex.h:570: (column 125) [FATAL] >>> Syntax error! The symbol `restrict' does not fit here.
where Regex.chs contains:
module Regex where #include
The offending section of regex.h is:
/* GCC 2.95 and later have "__restrict"; C99 compilers have "restrict", and "configure" may have defined "restrict". */ #ifndef __restrict # if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) # if defined restrict || 199901L <= __STDC_VERSION__ # define __restrict restrict # else # define __restrict # endif # endif #endif /* gcc 3.1 and up support the [restrict] syntax. */ #ifndef __restrict_arr # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) # define __restrict_arr __restrict # else # define __restrict_arr # endif #endif
/* POSIX compatibility. */ extern int regcomp _RE_ARGS ((regex_t *__restrict __preg, const char *__restrict __pattern, int __cflags));
extern int regexec _RE_ARGS ((const regex_t *__restrict __preg, const char *__restrict __string, size_t __nmatch, regmatch_t __pmatch[__restrict_arr], int __eflags));
which, according to c2hs -k, is transformed by cpp on my system to:
# 566 "/usr/include/regex.h" 3 4 extern int regcomp (regex_t *__restrict __preg, const char *__restrict __pattern, int __cflags);
extern int regexec (const regex_t *__restrict __preg, const char *__restrict __string, size_t __nmatch, regmatch_t __pmatch[__restrict], int __eflags);
`c2hs --cppopts="-D__restrict=" ...` works around the problem, so this is irritating rather than a showstopper. I spoke to Duncan about this on IRC yesterday: this is still present with 0.14.5:
% c2hs --version C->Haskell Compiler, version 0.14.5 Travelling Lightly, 12 Dec 2005 build platform is "i686-pc-linux-gnu" <1, True, True, 1>
If I can provide any more information, let me know.
Will _______________________________________________ C2hs mailing list C2hs@haskell.org http://www.haskell.org/mailman/listinfo/c2hs