компоновщик неопределённых символов turbo c

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

У меня есть следующий файл 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);
}

Ошибка: процесс вставки неопределенного символа (ppcb far)*

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

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


person alfjos89    schedule 13.03.2011    source источник
comment
Turbo C 3.0 20 лет. Есть более новые и лучшие инструменты.   -  person Joe    schedule 13.03.2011


Ответы (2)


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

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


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

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

person paxdiablo    schedule 13.03.2011
comment
Как связать оба файла в Turbo C++ v 3.0 IDE? - person alfjos89; 13.03.2011
comment
Крики! Ладно, это по памяти, а мне пришлось пройти весь путь до ствола мозга, чтобы достать его, он давно выведен из головного и мозжечка, и там много этилового спирта бардак там :-). Вам нужен проект, а не один файл. Я обновлю ответ с подробностями. - person paxdiablo; 13.03.2011

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

person pmg    schedule 13.03.2011