gpt4 book ai didi

c - 头文件无法工作 - 对 `method' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 17:26:53 25 4
gpt4 key购买 nike

头文件似乎无法正常工作。我是 C 新手,不太知道自己在做什么

error - findvals.c:(.text+0x561): undefined reference to `approxEqual'

findvals.c

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "utils.h"

int main(int argc, char **argv)
{
//printf("GRR ENTAR SOMETHANG");
//char word[64];
//scanf("%s", word);
int count = 0;
int ret;
double x;
double y;
int i = 0;
int c = 0;
char *refStr, *tolStr;
double refDub;
double tolDub;
int noArgs = 0;
//double temp;
//scanf("%lf" , &temp);
//printf("DUBBB %lf" , temp);

refStr = tolStr = NULL;

//Add code to read arguments, in ANY order i.e. -r can come before or after -t
int processCount = 0;
for(i = 1; i < 5; i++)
{
if (strcmp(argv[i], "-r"))
{
tolStr = argv[i+1];
i++;
//printf("\nIM HERE r");
}
else if (strcmp(argv[i], "-t"))
{
refStr = argv[i+1];
i++;
//printf("\nIM HERE t");
}
}

refDub = atof(refStr);
tolDub = atof(tolStr);

//printf("\nrefDub = %f", refDub);
//printf("\ntolDub = %f", tolDub);



//Check if arguments were passed in correctly.
if (argc != 5 || refStr == NULL || tolStr == NULL)
{
fprintf(stderr, "Usage: %s -r ref -t tol\n", argv[0]);
exit(1);
}

//Add code to note start time and date and then print it.
//Right now printing just a default string
struct tm *local;
time_t start, end;
time(&start); // read and record clock
local = localtime(&start);
printf("\n# Start time and date: %s", asctime(local));
//char * tnd="Wed 15 Oct 2014 19:18:13 IST";
//printf("# Start time and date: %s", tnd );
// Add rest of the functionality.

//READ
int rows; // Sixe x axis of the array
int cols; // Sixe y axis o the array
scanf("%d" , &rows);
scanf("%d" , &cols);
double opArray[rows][cols]; // Array for operations

for(i = 0 ; i < rows; i++)
{
for(c = 0 ; c < cols; c++)
{
scanf("%lf" , &opArray[i][c]);
}
}

//read in the matrix

double **mat = (double **) malloc(sizeof(double *)*rows);
int j=0;
for(i=0; i<rows; i++)
/* Allocate array, store pointer */
mat[i] = (double *) malloc(sizeof(double)*cols);

for(i=0; i<rows; i++)
{
for(j=0; j<cols; j++)
{
scanf("%lf",&mat[i][j]);
}
}



// The following print statement should be a part of a loop
// Uncomment it tailor it to your code but ONLY the part that
// comes after: \n",

// fprintf(stdout, "r=%d, c=%d: %.6f\n", r, c, rows[r][c]);
for(i= 0; i < rows ; i++)
{
for(j = 0 ; j <cols ; j++)
{
ret = approxEqual(mat[i][j],refDub,tolDub);
if (ret == 1)
{
fprintf(stdout, "r=%d, c=%d: %.6f\n", i, j, mat[i][j]);
count++;
}
}
}




// output the final count of matches. Again, you may ONLY modify
// the part of the print statement after: \n",
// fprintf(stdout, "Found %d approximate matches.\n", count);



//finally, print out the end time and date. Right now only printing
//a default string.
time(&end); // read and record clock
local = localtime(&end);
printf("\n# End time and date: %s", asctime(local));

exit(0);
}

utils.c

#include "utils.h"

int approxEqual(double x, double r, double t)
{
int ceiling = r+t;
int floored = r-t;

if(x > floored && x < ceiling)
return 1;
else
return 0;

}

utils.h

#if ! defined(UTILS_H)
#define UTILS_H

int approxEqual(double x, double r, double t);

#endif

如果有人能指出我正确的方向,那就太好了

我是如何编译它的

gcc -c utils.c
gcc findvals.o utils.o -o findvals
gcc -c findvals.c

最佳答案

gcc -c utils.c findvals.c utils.h

gcc findvals.o utils.o -o findvals

检查一下。这会起作用。

关于c - 头文件无法工作 - 对 `method' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599004/

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