warning: function declaration isn't a prototype

ik krijg in een programma de foutmelding:
warning: function declaration isn't a prototype

wat houdt deze in? ik krijg hem bij de volgende onderdelen:


void init(){
	/* deze functie initialiseer de varabelen. */
	m1=1;	/* m1 t/m m4 zijn motornummers geeft aan welke bitten van poort-B de motor aanstuurt */
	m2=2;
	m3=4;
	m4=8;
	links=1; 
	rechts=2;
	voor=1;
	achter=2;
	stop=0;
	t=1024; // wachttijd
	outp(0xff,DDRB);  /* PORTB is de uitgang */
	outp(0x00,DDRD); // PORDB is ingang
	 teller=0;
	 motor1=0;motor2=0;motor3=0;motor4=0; /* geeft de actuele status van de motor aan t.w.
	 					uit, linksom of rechts om. */
	 uitgang=0;
	}

en


   byte  detectie(){
	/* deze functie detecteert de sensoren en bepaald de status van de motoren*/
	byte tmp = inp(PIND);
	while (tmp != inp(PIND)){wacht(5);} //anti dender filter 
	return ~tmp;
	}
 

wat houdt deze foutmelding in? op internet kan ik er niet veel over vinden.

[Bericht gewijzigd door noppwes op ]

Misschien praat ik nu onzin, maar ik meen me te herinneren dat je "void" moet schrijven als je geen argumenten gebruikt in C.
Dan zou het worden:
void init( void )
byte detectie( void )

Maar nogmaals, ik kan er volledig naast zitten.

Dit is trouwens een electronica-forum, dus ik denk dat je snel een slotje zult krijgen.


   byte  detectie(){
	/* deze functie detecteert de sensoren en bepaald de status van de motoren*/
	byte tmp = inp(PIND);

Hier gebruik je byte vóór de functiekop. En het woord byte gebruik je ook in dezelfde functie. Dan zou je een oneindige lus genereren en een stackoverflow krijgen.

Hi,

Op 2 maart 2005 15:09:04 schreef Onbekend:


   byte  detectie(){
	/* deze functie detecteert de sensoren en bepaald de status van de motoren*/
	byte tmp = inp(PIND);

Hier gebruik je byte vóór de functiekop. En het woord byte gebruik je ook in dezelfde functie. Dan zou je een oneindige lus genereren en een stackoverflow krijgen.

Die byte, dat is toch een type aanduiding, zoals INT of CHAR ed...? Dus hij zegt dat detectie van het type byte is, en dan tmp ook van het type byte is, wat helemaal correct is dus.

Je doet toch ook:


int main(void)
{
   int a=0;
   cout<<a;
   return 0;
}

Das juist hetzelfde...

Wat jouw foutmelding betreft: Ben je zeker dat je alle functies bovenaan als prototype hebt gedeclareerd? Want zo een error kan gebeuren als je een functie aanroept die pas later in het programma gedeclareerd wordt...

EDIT: heb je aan de m1 tot m3 een type meegegeven?
volgens mij zit daar de fout, doe eens


byte m1=1;
byte m2=2;
byte m3=3;
byte m4=4;

En dit moet je voor ALLE variablen doen, je moet alle variablen in c vooraf declareren! dus bijvoorbeeld ook:


byte rechts=0;
byte links=125;
enz...

Groeten
Jan