Невозможно использовать функции, определенные в заголовочном файле - PullRequest
0 голосов
/ 15 июля 2011

Мой исходный файл начинается с:

#include "foo.h"

Я могу использовать все мои глобальные переменные, типы и структуры из моего заголовочного файла. В моем заголовочном файле я начал с нескольких включений:

#include<file.h>

Затем перейдем к глобальным переменным:

#define GLOBAL

Тогда структура:

#typedef struct boo;

Тогда печатает. Затем я иду к объявлениям функций. То есть:

size_t foo(int*r, size_t nitems);

Что я делаю не так, что получаю ошибки компоновщика>

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Файл заголовка предоставляет объявление функции для вашего исходного кода.Как вы обнаружили, этого достаточно для компиляции кода, но не для его ссылки.

Чтобы получить ссылку, вы должны предоставить компоновщику файл, содержащий фактическую скомпилированную функцию - объявление функциифактически обещание компилятору, что вы это сделаете.

То, как вы это сделаете, зависит от того, какие инструменты вы используете и в какой форме находится скомпилированная функция.

1 голос
/ 15 июля 2011

Проблема, вероятно, в том, как вы связываете.

0 голосов
/ 15 июля 2011

#define для простых идентификаторов подстановки работает точно так же, как копирование / вставка.

После того, как вы

#define GLOBAL 5

следующий код

int GLOBAL;
GLOBAL = 13;
putchar(GLOBAL);

преобразуется в

int 5;
5 = 13;
putchar(5);

который явно не компилируется.

...