Poniższy kod kompiluje się i działa dobrze w C (co najmniej zgodnie z "gcc -std = gnu99"), ale nie kompiluje się pod C++, podając "wiersz 5: błąd: nie można przekonwertować" podwójne "na" podwójne kompleks "przy inicjalizacji". Czy ktoś wie dlaczego?C Złożone liczby w C++?
#include "/usr/include/complex.h"
#include <stdio.h>
int main(int argc, char * argv[]) {
double complex a = 3; // ERROR ON THIS LINE
printf("%lf\n", creal(a));
return 0;
}
Zdaję sobie sprawę, że istnieje inny sposób prowadzenia złożonych liczb w C++, ale muszę używać liczb zespolonych C w C++, bo to jest jak kod Legacy dano mi robi rzeczy. Dzięki, jeśli możesz pomóc!
Ale naprawdę, _why_ nie chcesz używać [ 'std :: kompleks <>'] (http: // en.cppreference.com/w/cpp/numeric/complex)? – ildjarn
FTR, '-std = gnu99' nie jest tak naprawdę flagą, której szukasz ** C **. To jest "C z czymś, co myślenie GNU byłoby dobrym pomysłem, ale czy to jest, czy nie, jest do interpretacji". '-std = c99' jest pożądane, jeśli chcesz ** C **. –
ildjarn: Niestety, biblioteka, z którą pracuję używa numerów zespolonych C99 w C++. Mądrze nie wydaje się rozpoczynanie projektu w ten sposób, ale jest to kod, nad którym muszę pracować. Martinho: to prawda. Powinienem był zrobić test z -std = c99 – iloveponies