以下是我寫如何在keil uvision 4中使用複雜的頭文件?
#include <stdio.h>
#include<complex.h>
#include<math.h>
int main()
{
unsigned char i,j,p,q;
complex arr[3][2]={{60 ,0},{80 ,-120},{100, -240}};
complex fabcr[3][1]={60+0i,-40-69.2820i,-50+86.6025i};
complex fa012[3][1], D[3][1],B[3][1],Vbal[3][1];
complex Vpol[3][2];
complex sum,l;
complex A[3][3]={{1 , 1 , 1}, {1 ,-0.5+0.866i ,-0.5-0.866i}, {1 ,-0.5-0.866i, -0.5+0.866i}};
complex invA[3][3]= {{0.3333 - 0.0000i , 0.3333 + 0.0000i, 0.3333},
{0.3333 ,-0.1667 - 0.2887i, -0.1667 + 0.2887i},
{ 0.3333 + 0.0000i , -0.1667 + 0.2887i , -0.1667 - 0.2887i}};
complex a=-0.5+0.866i;
//a^2 =-0.5-0.866i
printf("%f +i %f \n %f %f",creal(a),cimag(a),cabs(a),(180/M_PI)*carg(a));
printf("\n line voltage fabcr \n\n");
for(i=0;i<3;i++)
{
for(j=0;j<1;j++)
{
printf("%f +i %f ",creal(fabcr[i][j]),cimag(fabcr[i][j]));
}
printf("\n");
}
printf("\n A matrix \n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%f +i %f ",creal(A[i][j]),cimag(A[i][j]));
}
printf("\n");
}
printf("\ninvA matrix\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%f +i %f ",creal(invA[i][j]),cimag(invA[i][j]));
}
printf("\n \n");
}
//matrix multiplication
for(p=0;p<3;p++)
{
sum=0;
for(q=0;q<3;q++)
{
l=fabcr[q][0]*A[p][q];
sum=sum+l;
}
printf("%f i %f \n", creal(sum),cimag(sum));
//fa012[p][1]=(1/3)*creal(sum)+i*(1/3)*cimag(sum);
fa012[p][0]=sum*0.33;
}
printf("\n symmetrical componenet fa012\n \n");
for(p=0;p<3;p++)
{
printf("%f i %f \n", creal(fa012[p][0]),cimag(fa012[p][0]));
}
D[0][0]=-fa012[0][0];
D[1][0]=0;
D[2][0]=-fa012[2][0];
printf("\n matrix D \n \n");
for(p=0;p<3;p++)
{
printf("%f i %f \n", creal(D[p][0]),cimag(D[p][0]));
}
printf("\n\nzero and negative sequence component in line voltage terms\n\n");
for(p=0;p<3;p++)
{
sum=0;
for(q=0;q<3;q++)
{
l=D[q][0]*invA[p][q];
sum=sum+l;
}
printf("%f i %f \n", creal(sum),cimag(sum));
//fa012[p][1]=(1/3)*creal(sum)+i*(1/3)*cimag(sum);
B[p][0]=sum*3;
}
printf("\n\nfinal balanced voltage \n\n") ;
for(p=0;p<3;p++)
{
Vbal[p][0]=fabcr[p][0]+B[p][0];
printf("\n %f i %f \n %f %f \n", creal(Vbal[p][0]),cimag(Vbal[p][0]),cabs(Vbal[p][0]),(180/M_PI)*carg(Vbal[p][0]));
}
printf("\n\n conversion to polar cordinates \n\n") ;
for(i=0;i<3;i++)
{
Vpol[i][0]= cabs(Vbal[i][0]);
Vpol[i][1]= (180/M_PI)*carg(Vbal[i][1]);
printf("%f %f \n",Vpol[i][0],Vpol[i][1] );
}
getch();
}
如果我想在KEIL使用這個程序就顯示錯誤。 請建議如何做複雜的操作? 我也複製了complex.h和_mingw.h從devcpp包含文件夾到keil/c51/inc文件夾。