неопределенный символ компоновщика Turbo C - PullRequest
0 голосов
/ 13 марта 2011

Я программирую очередь своего собственного типа структурных данных в Turbo C ++ 3.0, я не могу построить свой проект, потому что TC выдает сообщение об ошибке неопределенного символа при попытке связать его.

У меня есть следующий queue.h файл

#include <stdio.h>
struct pcb{
    int *QueueBase;
    char id;
    int quantum;
};

typedef struct pcb far * ppcb;
typedef struct nodocola far * pnodocola;

struct nodocola{
    ppcb a;
    pnodocola ant;
};
void insertProcess(ppcb arg1);
ppcb getProcess();

И мой файл queue.cpp

#include<stdlib.h>
#include<stdio.h>
#include<cola.h>
struct pcb{
    int *QueueBase;
    char id;
    int quantum;
};

typedef struct pcb far * ppcb;
typedef struct nodocola far * pnodocola;

struct nodocola{
    ppcb a;
    pnodocola ant;
};

pnodocola base = (pnodocola)malloc(sizeof(pnodocola*));

void insertProcess(ppcb arg1){
    base->a = arg1;
    pnodocola tmp = (pnodocola)malloc(sizeof(pnodocola*));
    tmp = base;
    base = (pnodocola)malloc(sizeof(pnodocola*));
    base->ant = tmp;
}

ppcb getProcess(){
    pnodocola tmp = (pnodocola)malloc(sizeof(pnodocola*));
    tmp = base->ant;
    base = tmp->ant;
    return tmp->a;
}

И файл, в который я включаюмой файл queue.h:

#include<queue.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<iostream.h>

void interrupt myTimer(...);
void interrupt (*prev)(...);
ppcb actual = (ppcb)malloc(sizeof(ppcb*));
int ticks;
const quantum = 4;

void main()
{
    clrscr();
    prev=getvect(8);
    setvect(8,myTimer);
    getch();
    disable();
    setvect(8,prev);
    enable();
}

void interrupt myTimer(...)
{
    (*prev)();      
}

void init(...)
{
    actual->id='A';
    actual->quantum = quantum;
    insertProcess(actual);
}

Ошибка: неопределенный символ insertProcess (ppcb far ) *

Я работаю на виртуальной машине с Windows XP 32 бит.

Редактировать: Извините, у меня ошибка, я переименовываю свой файл из cola.h в queue.h, когда пишу вопрос, но #include правильно и ошибка присутствует.

Ответы [ 2 ]

3 голосов
/ 13 марта 2011

А вы на самом деле связываете с объектным файлом, созданным queue.cpp?Недостаточно просто включить заголовочный файл в ваш основной код, вы должны связать и основной код, и код очереди при создании исполняемого файла.

И, кроме того, почему вы используете такойархаичная реализация C, когда гораздо лучше, гораздо более современные и просто дешевые варианты?


Чтобы Turbo C компилировал несколько исходных файлов, я думаю, что вам нужно создать проект, а затемдобавьте файлы C в этот проект.Затем он узнает, что должен скомпилировать и связать все эти исходные файлы в проекте.

Если у вас есть только один исходный файл (нет проекта), он будет обрабатывать его как проект столько этот файл.

0 голосов
/ 13 марта 2011

Вы говорите, что включили "queue.h", но я не вижу #include "queue.h" в соответствующем файле.

...