I’ve got a library compiled with MinGW which supports the C99 Keywords, _Complex. I’d like to use this library with MSVC++ 2010 compiler. I’ve tried to temporarily switch off all the _Complex syntax code, so that it compiles. I found most of the other functions worked fine in MSVC++. Now I want to enable the parts with _Complex definition, but really don’t know how to.
Obviously I can’t recompile it in MSVC++ as the library asks for C99 features, etc. However, I feel like it is such a waste to give it up, and look for substutions, because it works perfect with most other functions.
I think I can write wrappers of the APIs that require _Complex syntax and compile it with MinGW GCC then it will be able to import into my MSVC project. But I still want to know if there is any better workaround of this problem, like what is the “standard” way people dealing with problem when compile C99 complex number syntax in VC++?
Xing.
From the C Standard (C11 §6.2.5 ¶13; C99 has approximately the same language):
I don’t have the C++ Standard in front of me, but the complex type templates defined in
<complex>have the same requirement; this is intended for compatibility.You can therefore re-write C functions taking & returning values of type
double _Complexas C++ functions taking & returning values of typestd::complex<double>; so long as name-mangling on the C++ side has been turned off (viaextern "C") both sides will be compatible.Something like this might help: