турбо линкер на недефиниран символ c

Програмирам опашка от моя собствен тип данни struct в 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 е правилно и грешката е налице.


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