Je développe un projet qui compile certaines bibliothèques avec c99 et une bibliothèque avec C++ 11 et utilise des nombres complexes complex.h dans la bibliothèque c99. Je sais que c'est peut-être une idée stupide, mais ce n'était pas le mien et je dois le faire fonctionner d'une manière ou d'une autre.Comment compiler des nombres complexes avec C++ 11
Le code ne compile pas avec gcc4.9 et -std = C++ 11 et je suis tout à fait clueless quoi faire. Comment puis-je compiler cet extrait?
#include <complex.h>
#include <cstdio>
int main(int argc, char * argv[]) {
double _Complex a = 3.0 + 0.0 * _Complex_I;
//printf("%lf\n", creal(a));
return 0;
}
donne l'erreur
In file included from /usr/local/include/c++/7.1.0/complex.h:36:0,
from main.cpp:1:
main.cpp: In function 'int main(int, char**)':
main.cpp:5:33: error: unable to find numeric literal operator 'operator""iF'
double _Complex a = 3.0 + 0.0 _Complex_I;
^
main.cpp:5:33: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
main.cpp:5:33: error: expression cannot be used as a function
double _Complex a = 3.0 + 0.0 _Complex_I;
^
main.cpp:5:19: warning: unused variable 'a' [-Wunused-variable]
double _Complex a = 3.0 + 0.0 _Complex_I;
avec
g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
-std = gnu ++ 11 œuvres, il semble, mais est-il un moyen de le faire fonctionner avec std = C++ 11?
Ne devrait-il pas s'agir d'un double complexe a = 3.0 + 0.0 * _Complex_I; '? (Notez le '*') –
à droite. Je l'ai corrigé – Philipp