Forum: Mikrocontroller und Digitale Elektronik Struct Code umwandeln


von Mark S. (mark522)


Lesenswert?

hallo zusammen,

gibt es einen Unterschied, ich den folgenden Code von
1
typedef struct { double x; double y; } berech;
2
3
berech c[2] = 
4
5
{ {0,0},
6
    {0.040508,8 },}
7
8
9
10
double interp( berech* c, double x, int n )
11
{
12
    int i;
13
    for( i = 0; i < n-1; i++ )
14
    { if ( c[i].x <= x && c[i+1].x >= x )
15
        {
16
    double difx = x - c[i].x;
17
    return double difn = c[i+1].x - c[i].x;
18
        }}
19
    return 0; 
20
}
zu änderen ?
1
struct berech { double x; double y;} ;
2
3
berech c[2] = 
4
5
{ {0,0},
6
    {0.040508,8 },}
7
8
9
10
double interp( berech c, double x, int n )
11
{
12
    int i;
13
    for( i = 0; i < n-1; i++ )
14
    { if ( c[i].x <= x && c[i+1].x >= x )
15
        {
16
    double difx = x - c[i].x;
17
    return double difn = c[i+1].x - c[i].x;
18
        }}
19
    return 0; 
20
}

von Heiko L. (zer0)


Lesenswert?

Ja, letzteres funktioniert in C nicht.

von Theor (Gast)


Lesenswert?

Ja. Das zweite Codebeispiel wird einen Fehler verursachen, weil der Typ 
von 'berech' nicht bekannt ist bzw. weil an dieser Stelle ein Typname 
erwartet wird und nicht der Name einer Struktur.

Du hast in dem zweiten Code lediglich eine Struktur benannt, aber damit 
noch keinen neuen Typ definiert.

Korrekt müsste der zweite Code sein:
1
struct berech { double x; double y;};
2
3
struct berech c[2]  = 
4
5
{ {0,0},
6
    {0.040508,8 },};
7
8
...

Am besten sowas einfach mal durch den Compiler jagen. Das erspart viele 
Fragen. :-)

von Mark S. (mark522)


Lesenswert?

mit dem Grund ?

von minifloat (Gast)


Lesenswert?

Mark S. schrieb:
> mit dem Grund ?

Ein "tagname" einer Struktur ist nicht automatisch ein Datentyp.

von Theor (Gast)


Lesenswert?

Mark S. schrieb:
> mit dem Grund ?

Bitte formuliere einen vollständigen Satz. Ich habe keine Idee, was Du 
mit dem Fragment sagen willst.

Falls Du Dich auf einen vorherigen Beitrag beziehst, füge zuvor das 
Zitat an. Der Button "Markierten Text zitieren" ist dabei hilfreich.

von Theor (Gast)


Lesenswert?

minifloat schrieb:
> Mark S. schrieb:
>> mit dem Grund ?
>
> Ein "tagname" einer Struktur ist nicht automatisch ein Datentyp.

Genau. Siehe 
Beitrag "Re: Struct Code umwandeln"

"Du hast in dem zweiten Code lediglich eine Struktur benannt, aber damit
noch keinen neuen Typ definiert."

von Eric B. (beric)


Lesenswert?

Theor schrieb:
> Ja. Das zweite Codebeispiel wird einen Fehler verursachen, weil der Typ
> von 'berech' nicht bekannt ist bzw. weil an dieser Stelle ein Typname
> erwartet wird und nicht der Name einer Struktur.

Ausserdem kriegt die Funktion interp() im 2. Beispiel kein Zeiger auf 
dem Array sondern lediglich das erste Element vom Array als Parameter 
geliefert. Damit lässt sich die Indizierung also gar nicht machen. Der 
Compiler wird gemeckert haben.

von Cyblord -. (cyblord)


Lesenswert?

Läuft bei euch ein Wettbewerb über die blödesten Funktionsnamen?

von Rolf M. (rmagnus)


Lesenswert?

Cyblord -. schrieb:
> Läuft bei euch ein Wettbewerb über die blödesten Funktionsnamen?

Ich hab mich eher gefragt, ob das ein Wettberwerb im "finde die 
Unterschiede" ist.

Theor schrieb:
> Genau. Siehe
> Beitrag "Re: Struct Code umwandeln"
>
> "Du hast in dem zweiten Code lediglich eine Struktur benannt, aber damit
> noch keinen neuen Typ definiert."

Einen Typ hat er damit schon definiert. Aber der heißt eben nicht 
"berech", sondern "struct berech".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.