子文件matrix.c
#ifndef main1
#include <stdio.h>
#include <stdlib.h>
#define mat_mul__main 1
#define mat_mul__out 1
#endif
double *mat_mul(double A[],double B[],int I,int K,int J)
{
int i,j,k;double *mat_mul_return;
mat_mul_return=calloc( I*J , sizeof(double) );
for(i=0;i<I;i++)
for(j=0;j<J;j++)
for(k=0;k<K;k++)
mat_mul_return[i*J+j] += A[i*K+k]*B[k*J+j];
#if mat_mul__out
for(i=0;i<I;i++)
for(j=0;j<J;j++)
{
printf("%12g",mat_mul_return[i*J+j]);
if(j==J-1)
printf("\n");
}
#endif
return mat_mul_return;
}
#ifdef mat_mul__main
int main()
{
double A[]={1,2,3,4},B[]={1,2,3,4},*p;
p=mat_mul(A,B,2,2,2);
return 0;
}
#endif
主文件:main.c
#include <stdio.h>
#include <stdlib.h>
#define main1
#define mat_mul__out 1
#include "matrix.c"
int main()
{
double A[]={9,2,3,8},B[]={1,2,3,4},*p;
p=mat_mul(A,B,2,2,2);
}
matrxi.c可以单独运行,输出结果
7 10
15 22
main.c运行显示结果
15 26
27 38
[[italic] 本帖最后由 许一民 于 2007-12-16 22:29 编辑 [/italic]]