gpt4 book ai didi

自制库的C编译错误

转载 作者:行者123 更新时间:2023-11-30 15:46:05 25 4
gpt4 key购买 nike

距离我上次用 C 语言编写已经有好几年了,所以我确信我得到的错误是非常愚蠢的,即使我彻底检查了搜索引擎。如果是这种情况,请提前抱歉。

我正在编写的程序变得越来越大,所以我决定将一些基本函数导出到自制库“stackmat.c”中这是具有两个功能的代码,stackmat.c

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <math.h>
//#include "stackmat.h"

double *stackmat(double *A, int sizeA[2], int dim)
// dim = 0, output is 1 row of sizeA[0] elements
// dim = 1, output is 0 column of sizeA[1] elements
{ double *B;
int i;
B = calloc(sizeA[dim],sizeof(double));
if (dim == 1) // size sizeA[1]
{ for (i=0; i<sizeA[0]*sizeA[1]; i++) B[i%sizeA[1]] += A[i];
}
else // size sizeA[0]
{ for (i=0; i<sizeA[0]*sizeA[1]; i++) B[i/sizeA[1]] += A[i];
}
return B;
}

double *SumMat(double *A, double *B, int sizeA[2], int sizeB[2])
{ int i;
double *C;
C = calloc(sizeA[0]*sizeA[1],sizeof(double));
for (i=0; i<sizeA[0]*sizeA[1]; i++) C[i] = A[i] + B[i];
return C;
}

标题stackmat.h

#ifndef STACKMAT_H_INCLUDED
#define STACKMAT_H_INCLUDED

double *stackmat(double *A, int sA[2], int dim)
double *SumMat(double *A, double *B, int sizeA[2], int sizeB[2])

#endif

以及一个简单的调用程序检查Lantlib.c

#include <stdio.h>
#include <stdlib.h>
#include "stackmat.h"

void main()
{ double *A, *B;
int i, sA[2] = {4,3};
A = malloc(12*sizeof(double));
for (i=0; i<12; i++) A[i] = (double) 0.5+i;
for (i=0; i<12; i++) printf(" %.1f",A[i]);
B = stackmat(A,sA,1);
for (i=0; i<3; i++) printf(" %.1f",B[i]);
}

使用“gcc -c stackmat.c”编译时,一切正常。但是“gcc checklantlib.c -o stackmat.o”返回一个我无法理解的错误

checkslantlib.c: In function ‘stackmat’:
checkslantlib.c:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
checkslantlib.c:13: error: expected ‘{’ at end of input

如果我在库中包含 header 调用,这次是库编译返回几乎相同的错误。

有人可以看看我做错了什么吗?

最佳答案

-o 指定输出文件。不管 gcc 对现有 stackmat.o 做了什么,您需要通过执行以下操作将 stackmat.o 包含在编译中:

> gcc checkslantlib.c stackmat.o -o checkslantlib

或已编译以及

> gcc checkslantlib.c stackmat.c -o checkslantlib

关于自制库的C编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com