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};