Frage zu typedef

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Ivo
Beiträge: 26
Registriert: Fr Sep 26, 2014 3:54 pm

Frage zu typedef

Beitrag von Ivo » So Mär 15, 2015 11:20 am

Hallo Forum,
ich habe ein Verständnisproblem.
haederdatei:

Code: Alles auswählen

#ifndef LAGFUNC_H_
#define LAGFUNC_H_

int bestellMenge(struct artikel_t art[], int*, int); 
.c Datei

Code: Alles auswählen

int bestellMenge(struct artikel_t art[], int *ueberlauf, int len) 
{

	struct artikel_t artAkt;          /*aktualen artikel. Die Struktur ihnen der Funk nenne ich art_Akt. Es ist die gleiche Struktur.*/
	int i=0, contnr=0;

	if(openLager()==EXIT_SUCCESS)
	{
		while(readNext(&artAkt)==EXIT_SUCCESS)   /*  die (Anfangs)-Adresse der Srtuktur.*/
		{
			if(artAkt.bestand < artAkt.min)
			{
				if(i<len)
				{
					art[contnr]=artAkt;
					contnr++;


				}
				else
				{
					ueberlauf++;  /* oder (*ueberlauf)++ */

				}
				i++;

			}
		}
	}
	else

		 contnr=-1;                                       
    closeLager();                                         
	return contnr;            
}
so funktioniert problemlos.
ich möchte das Programm mit typedef erstellen, also

headerdatei:

Code: Alles auswählen

#ifndef LAGFUNC_H_
#define LAGFUNC_H_

typedef struct{
	int counter;
	int ueberlauf;
}return_Wert;

return_Wert bestellMenge(struct artikel_t *, int*, int);
c. datei

Code: Alles auswählen

return_Wert bestellMenge(struct artikel_t art[], int *ueberlauf, int len)  /* call-by-reference  and call-by-value  */
																  /* was die Function macht*/

{
									  /*lokale Variable */
	struct artikel_t artAkt;          /*aktualen artikel. Die Struktur ihnen der Funk nenne ich art_Akt. Es ist die gleiche Struktur.*/
	int i=0, counter=0;

	if (openLager()==EXIT_SUCCESS)					/* 1. open Datei */
	{
		while(readNext(&artAkt)== EXIT_SUCCESS)  	/* 2. read Datei.  aufruf von *artArt */
		{
			if(artAkt.bestand < artAkt.min)			/* 3. if bestand < min */
			{
				if(i<len)							/* 4. i < len  dann */
				{
					art[counter] = artAkt;			/* oben *art == art[] */
					counter++;						/* alle Artikel zählen */
				}

				else
				{
					ueberlauf++;
				}
			i++;
			}

		}
	}

	else counter = -1;
	closeLager();

	return ???????????????? ;
}

mein Problem ist folgendes: als Ausgabe return counter;
wenn ich typedef verwende, es zeigt mir incompatible types when assigning to type 'int' from type 'return_Wert'. Also wie gibt man nur ein Variable von ein struct oder typedef aus? Ins I-net habe ich nichts gefunden.
Hat jemand Vorschlag. Danke

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Frage zu typedef

Beitrag von cloidnerux » So Mär 15, 2015 11:51 am

Code: Alles auswählen

return ???????????????? ;
Das kann auch nicht Funktionieren.
wenn ich typedef verwende, es zeigt mir incompatible types when assigning to type 'int' from type 'return_Wert'.
Du beantwortest dir deine eigene Frage.
Du legst eine Funktion an, die etwas vom Typ "return_Wert" zurück geben soll, willst dann aber ein int zurückgeben?
Also wie gibt man nur ein Variable von ein struct oder typedef aus?
https://www.proggen.org/doku.php?id=c:tutorial:struct
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ivo
Beiträge: 26
Registriert: Fr Sep 26, 2014 3:54 pm

Re: Frage zu typedef

Beitrag von Ivo » So Mär 15, 2015 12:58 pm

na ja, ich verstehe meinen Fehler. Die Ausgabe muss auch von Type return_Wert sein.
Wie kann ich es durch Änderung des Ruckgabetyps von der Funktion machen?

Antworten