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?
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.
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.