Sử dụng từ khóa C cho phức tạp: _Complex. C++ sử dụng phức tạp như một lớp (mẫu). Tôi không chắc chắn nơi mà creal là hoặc tôi sẽ bỏ ghi chú đó.
#include <complex.h>
#include <cstdio>
int main(int argc, char * argv[]) {
double _Complex a = 3.0 + 0.0I; // DECLARATION WORKS NOW - NOTE ASSIGNMENT MUST HAVE IMAG PART
//printf("%lf\n", creal(a));
return 0;
}
Điều này hoạt động trong gcc (tôi đã biên soạn bằng g ++). Tôi nhận được cảnh báo về các tiêu đề .h không được chấp nhận.
Here là liên kết đến đường dẫn email hiển thị khả năng tương thích không chuẩn với C++ và C với số phức. C++ 11 yêu cầu khả năng tương thích bố cục của các phức hợp C++ với C _Complexes.
Tôi hiện đang điều tra về creal, v.v. trong C++. Tôi không tìm thấy gì trong tiêu chuẩn. Vì dường như có một số nỗ lực để cung cấp một số khả năng tương thích nguồn giữa C++ và C thì creal, cpow, v.v. có thể bổ sung tốt cho TR2 các đề xuất thư viện.
Nhưng thực sự, _why_ bạn không muốn sử dụng [ 'std :: phức tạp <>'] (http: // en.cppreference.com/w/cpp/numeric/complex)? – ildjarn
FTR, '-std = gnu99' không thực sự là cờ bạn muốn cho ** C **. Đó là "C với những thứ GNU nghĩ là một ý kiến hay, nhưng liệu nó có hay không là để giải thích". '-std = c99' là mong muốn nếu bạn muốn ** C **. –
ildjarn: Thật không may, thư viện tôi đang làm việc với việc sử dụng các số phức C99 trong C++. Nó không có vẻ khôn ngoan để bắt đầu một dự án theo cách này, nhưng đây là mã tôi phải làm việc với. Martinho: Đúng vậy. Tôi nên làm bài kiểm tra với -std = c99 – iloveponies