gpt4 book ai didi

在 gcc 中包含 .h 文件时编译 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:16 24 4
gpt4 key购买 nike

我必须编写一个包含外部 C 文件的程序。我最初是在 Visual Studio 中编写这个程序的,但我现在必须在 Linux 上切换到 gcc。我包含了 .h 文件,它允许我调用另一个 C 文件中的函数。这在 Visual Studio 中有效,但 gcc 不接受引用。它在尝试调用函数 convertAllStrings(c,size) 时中断。

错误是:undefined reference to `convertAllStrings'

我在 Google 上四处搜索,发现一些有这个问题的人说我应该使用 gcc -I 命令。我试过了,但没有运气。我具体使用了:

gcc -I/home/CS/user/unix Main.c -o proj

我在同一目录中有 Main.CconvertAll.hconvertAll.c。这是我的代码:

文件 Main.c:

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>

#include "convertAll.h"

int main(int ac, char *av[])
{
int size;
char strings[100];
char temp;

printf("Number of Strings: ");
scanf("%d", &size);
char **c = malloc(size);

int i = 0;
int j = 0;
while (i < size)
{
printf("Enter string %i ",(i+1));
scanf("%c", &temp); // temp statement to clear buffer
fgets(strings, 100, stdin);
c[i] = malloc(strlen(strings) + 1);
strcpy(c[i], strings);
i++;
}

convertAllStrings(c,size); // ** CODE BREAKS HERE

return 0;
}

文件 convertAll.h:

#ifndef convertAll_H_
#define convertAll_H_

void convertAllStrings(char **sentenceList, int numOfSentences);

#endif

文件 convertAll.c:

void convertAllStrings(char **sentenceList, int numOfSentences){

printf("function pass 0 is: %s\n", sentenceList[0]);

}

最佳答案

你用过:

gcc -I/home/CS/user/unix Main.c -o proj

您在这里只编译 Main.c。你还没有编译 convertAll.c。

你需要:

gcc -I/home/CS/user/unix Main.c convertAll.c -o proj

或者您可以使用其中之一:

gcc -I. Main.c convertAll.c -o proj
gcc Main.c convertAll.c -o proj

(顺便说一句,对于所有警告和使用 gcc -Wall -Wextra -g 的调试信息,您最好使用 ask the compiler)

关于在 gcc 中包含 .h 文件时编译 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213084/

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