clang compiling complex reports err

No, _Complex is used in MSVC’s math.h.

line 135: _CRTIMP double __cdecl _cabs(__in struct _complex _Complex);

Then if I use math.h with Clang on windows, what should I do?

2011/1/4 <way_lzl@sina.com>

No, _Complex is used in MSVC’s math.h.

line 135: _CRTIMP double __cdecl _cabs(__in struct _complex _Complex);

Ok that’s in Visual Studio 2005. It was changed in MSVC 2008 to not use _Complex as parameter name.

Then if I use math.h with Clang on windows, what should I do?

Either you submit a patch to fix it yourself or you can submit a PR and wait for someone else to fix it.
Otherwise use VS 2008.

_Complex should really be a C99-only keyword. If we did that, then you could compile as C89 without a problem.

John.

GCC accepts _Complex as a keyword in C++ mode. We could turn that off in Microsoft C++ mode, of course.

  • Doug

I meant C99 as “not in C89”, because IIRC complex numbers were added in C99; but it looks like GCC treats _Complex as a keyword even in -std=c89, and it’s probably best to emulate that.

It definitely sounds like _Complex shouldn’t be a keyword in VS2005 mode.

John.