我使用Xcode(在C中)编写了一个应用程序,它在很大程度上依赖于使用复数。即:
#include <complex.h>
...
float a, b;
complex float z;
z = a + I * b;
... etc
现在,这个复数表示法在Xcode中运行良好,在构建OS X兼容版本的应用程序时是完美的解决方案。但是,现在我需要构建一个Windows版本,因此我将相同的代码导入Visual Studio 2015.但遗憾的是,这种符号不起作用,因为VS的复数实现非常不同。在研究了我的问题后,我没有找到任何有关如何以这种方式处理复数的有用信息,以便在两个IDE上成功编译。
这可能是由于我对这个C99标准认识不足或者可能根本不可能。但是,虽然我觉得我可以使用VS自己处理复杂数字的方式重写C代码,但这并不理想,因为我现在计划为两个操作系统进一步开发应用程序。并行编写两个版本的相同代码需要花费太多时间。
答案 0 :(得分:0)
如下所示:'Compiling C code in Visual Studio 2013 with complex.h library'
_Dcomplex dc1 = {3.0, 2.0};
用于变量声明。
从内部查看VS2013的“complex.h”标题,似乎微软决定自己实现C复数。你必须使用real()和imag()函数来实现自己的算术运算符,即:
double real_part = real(dc1) + real(dc2);
double imag_part = imag(dc1) + imag(dc2);
_Dcomplex result = {real_part, imag_part};
我怀疑微软是否已更正complex.h
标头,因此您应检查complex.h
标头文件以获取float
类型的详细信息