Archief - [prog][C]compile probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Darth-Falcon

Legacy Member
Om te beginnen, het is voort school

vermits ze bij ons mijlenver achterliggen werken wij in labo interfacing nog met win98 en ... turboc of borland 4.5 .....

Code:
//sdjghdlghkdshg
#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define PORT_SETUP 0xFE	//9600 baud
#define COM_PORT 0 	//COM2

int main()
{
  //declaratie
  void serinit();
  void outch(char);
  void outs(unsigned char *);

  clrscr();

  //initialisatie
  serinit();

  //uitsturen
  outs("00000_01Z00_02AA_1B0oWij zijn COOL_04");

  /*
    00000	synchronisatie
    _01		SOH
    Z		type lichtkrant
    00		adres lichtkrant
    _02		start of text
    A		formaat: tekst
	A	file label
	_1B	ESC -> ALTIJD
	0	Display position
	o	AUTOMODE
		Tekst
    _04		Afsluiten van de transmissie
  */
  printf("Einde...");
  getch();

}

//COM initialiseren & snelheid
void serinit()
{
 union REGS regs;
 regs.h.ah = 0; //init
 regs.h.al = PORT_SETUP;//transmissiesnelheid
 regs.x.dx = COM_PORT; 	//nummer van de COM
 int86(0x14, &regs, &regs); //interrupt van de seriele poort
}

//uitsturen van een karakter
void outch(char c)
{
 union REGS regs;
 regs.h.ah = 1; //uit te sturen
 regs.h.al = c; //uit te sturen karakter
 regs.x.dx = COM_PORT; //nr van de COM
 int86(0x14, &regs, &regs);
}


//uitsturen van een tekst
void outs(unsigned char *s)
{
 while (*s)
 {
  outch(*s++);
 }
}

vermits ik nog genen borland heb en ik het vertik om nog met dos programma's te werken (er is ergens een grens) probeer ik het thuis dus in devc te compilen maar het gaat niet, de error is "storage size of 'regs' isn't known"

ik vermoed dat het ligt aan het feit dat ik thuis met winxp werk (en dit dus dos code is), int school lukt het om te compilen, hier dus niet :wtf:


ps. dit is code om een boodschap te sturen naar een lichtkrant

Vich

Legacy Member
Waar is de declaratie van union REGS?
De compiler weet niet hoe groot REGS is, omdat je REGS niet hebt gedefinieerd, zoals:

union REGS
{
objectType h;
objectType x;
// ...
};

Misschien is REGS wel gedefinieerd in in van de header files in de compiler op school, maar niet thuis? Of misschien vergat je een include?

Darth-Falcon

Legacy Member
het zal wellicht het eerste wel zijn, met die headers, want compilen lukt int school wel, hier niet

Vich

Legacy Member
Darth-Falcon zei:
het zal wellicht het eerste wel zijn, met die headers, want compilen lukt int school wel, hier niet

Je kan best es een "search through all files" doen op school en thuis en zoeken naar "union REGS", dan weet je direct waar het gedeclareerd is of zou moeten zijn en welke header je geacht bent te includen daarvoor.

Darth-Falcon

Legacy Member
int school zit union regs in dos.h, wat geinclude is

enne, hoe doe je search trough all files ? :oink:

Vich

Legacy Member
Darth-Falcon zei:
int school zit union regs in dos.h, wat geinclude is

enne, hoe doe je search trough all files ? :oink:

Bij mij - in Visual Studio - is dat ctrl+shift+f. 't Kan natuurlijk niet in elk IDE. Meestal ergens in het menu "edit"-"find"/"search"-... Be creative?

wlibaers

Legacy Member
En eens je dat opgelost hebt zit je nog met het probleem dat je interrupts gebruikt. Vermits je er geen DOS programma van wil maken zal dat deel ook aangepast moeten worden.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan