c visual-studio visual-studio-2013 complex-numbers

Compilando el código C en Visual Studio 2013 con la biblioteca complex.h



visual-studio visual-studio-2013 (1)

http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx

C99 admite Visual Studio 2013, pero no puedo usar complex.h en mi código "C".

#include <stdio.h> #include <complex.h> int main(void) { double complex dc1 = 3 + 2 * I; double complex dc2 = 4 + 5 * I; double complex result; result = dc1 + dc2; printf(" ??? /n", result); return 0; }

Obtengo errores de sintaxis

Editar: Perdón por la parte faltante.

error C2146: syntax error : missing '';'' before identifier ''dc1'' error C2065: ''dc1'' : undeclared identifier error C2088: ''*'' : illegal for struct error C2086: ''double complex'' : redefinition error C2146: syntax error : missing '';'' before identifier ''dc2'' error C2065: ''dc2'' : undeclared identifier error C2088: ''*'' : illegal for struct error C2086: ''double complex'' : redefinition error C2146: syntax error : missing '';'' before identifier ''result'' error C2065: ''result'' : undeclared identifier error C2065: ''result'' : undeclared identifier error C2065: ''dc1'' : undeclared identifier error C2065: ''dc2'' : undeclared identifier error C2065: ''result'' : undeclared identifier IntelliSense: expected a '';'' IntelliSense: expected a '';'' IntelliSense: expected a '';'' IntelliSense: identifier "result" is undefined IntelliSense: identifier "dc1" is undefined IntelliSense: identifier "dc2" is undefined


En caso de que alguien esté buscando un año después, intente

_Dcomplex dc1 = {3.0, 2.0};

para la declaración de variable.

Al mirar dentro del encabezado "complex.h" de VS2013, parece que Microsoft decidió su propia implementación para los números complejos C. Deberá implementar sus propios operadores aritméticos utilizando las funciones real () e imag (), es decir:

double real_part = real(dc1) + real(dc2); double imag_part = imag(dc1) + imag(dc2); _Dcomplex result = {real_part, imag_part};