0

所以我知道 .h 和 .c 文件,但是我在编译代码时遇到了问题。我错过了一些东西!Main.c 包括“Converter.h”,它有

  #ifndef CONVERTER_H
  #define   CONVERTER_H

  void runConverter(char *);

  #endif 

我的 converter.c 文件有实现..

#include "Converter.h"
#include "Stack.h"
#include "Queue.h"

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

int checkChar(char input);
void printQueue(QueueP que);
void runConverter(char *input){ .... code etc (calls a stack and a queue 
and does stuff)}

问题是,我在每个文件中都得到了未定义的引用。.c 没有在 Stack.h 或 Queue.h 中找到信息,并且 converterTester 没有找到我的主要 runConverter 函数。有点困惑,但我认为它很小。有什么帮助吗?

4

1 回答 1

0

没有看到其他文件,也不知道如何构建可执行文件,纯粹是猜测......

您需要编译每个源,并将所有对象链接在一起

gcc -g -O2 -Wall -c Converter.c
gcc -g -O2 -Wall -c Stack.c
gcc -g -O2 -Wall -c Queue.c
gcc -g -o pgm Converter.o Stack.o Queue.o

-c前三行中的(仅编译)标志至关重要,您不希望编译器尝试一次性创建可执行文件。不,编译器不知道你想在可执行文件中包含哪些其他部分Converter.c。在 [SO] 上,我们非常擅长猜测,但猜测是针对人类的,而不是编译器。

于 2014-03-07T20:25:19.113 回答