Hello Jerker, * Jerker Bäck wrote on Tue, Jul 10, 2007 at 06:23:21PM CEST: > Hello Ralf, > > That would be a bug in MSVC, right? > Generally speaking, the error have not so much to do with the restrict > keyword. This only affects when you typedef a custom type and later try to > change its behaviour. The MS compiler is known to look deep when preprocess > and make warnings or errors according to certain rules. The limitation here > is probably intentional, not a bug. My comment on this was only that I agree > with the compiler. Don't you?
No, I don't. ISO C99 allows to add type qualifiers directly as well as indirectly via typedefs. For example, in 6.7.3(4) it says: | If the same qualifier appears more than once in the same | specifier-qualifier-list, either directly or via one or more typedefs, | the behavior is the same as if it appeared only once. And the Syntax in 6.7(1) is quite clear in that a type-qualifier (such as restrict) can appear in addition to a type-specifier (such as a typedef name). So IMVHO the Autoconf test is just prudent in detecting this compiler bug. > In the real world, GNU regex is using the restrict keyword in its > prototypes: > extern int __cdecl regcomp (re_pattern_buffer_t* __restrict, const char* > __restrict, int); > - Works for me. Note the difference from the test declarations. > > Anyway, if autoconf wish to support the MS compiler, the change in the test > is simple. Is there a misunderstanding here? Autoconf supports MSVC wrt. restrict: it will add #define restrict to config.h which will cause code like in the configure test to be compiled successfully by MSVC, no? Hope this clears things up. > FYI the environment is x86_64 Interix 6 (Vista x64 SUA) AFAIK the restrict > keyword is not supported for MS compilers < 1400 I will test with the Intel > compiler to see if there are any differences. My icc shell script is not > quite ready though. That would be good in any case, independently of the above. Thanks. Cheers, Ralf
