Forum: Compiler & IDEs warning: return type defaults to 'int' ?


von Simon (Gast)


Lesenswert?

Was will mir der compiler hier sagen?
Die interrupt routine muss einen rückgabe wert haben?!


avr-gcc -c -mmcu=atxmega32a4 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=libs/x_uart.lst  -std=gnu99 -MD -MP -MF 
.dep/x_uart.o.d -DF_CPU=32000000L libs/x_uart.c -o libs/x_uart.o


libs/x_uart.c:70:1: warning: return type defaults to 'int'
libs/x_uart.c:70:1: warning: function declaration isn't a prototype

1
ISR(USARTE0_TXC_vect)
2
{
3
        if (!fifoIsEmpty(&uart_send_fifo))
4
                USARTE0.DATA = fifoRead(&uart_send_fifo);
5
}

von (prx) A. K. (prx)


Lesenswert?

Es fehlt:
#include <avr/interrupt.h>

So sieht das für den Compiler aus wie die Definition einer 
altertümlichen pre-ANSI Funktion ISR mit Parametername USARTE0_TXC_vect.

von Simon (Gast)


Lesenswert?

aaaaaaaaaaaaaaaaaaaaaaaah!

Danke

von Simon (Gast)


Lesenswert?

Wollte nicht gleich nen neues Topic aufmachen,
worin liegt eigentlich der Unterschied zwischen

fifo->write

und

fifo.write


Wann wird hier ein Punkt oder ein -> verwendet?
1
typedef struct fifo
2
{
3
        uint8_t i_write;
4
        uint8_t i_read;
5
} fifo;

von (prx) A. K. (prx)


Lesenswert?

Völlig unpassender Thread. Aber im einen Fall ist fifo ein Pointer auf 
eine Struktur, im anderen Fall die Struktur selbst. C Handbuch parat?

von GUIler (Gast)


Lesenswert?

fifo.write wenn fifo eine Instanz der Struktur ist

fifo->write wenn fifo ein ZEIGER auf eine Instanz der Struktur ist

von Simon (Gast)


Lesenswert?

Vielen Dank, man man man ist das kompliziert.

von GUIler (Gast)


Lesenswert?

fifo->write ist übrigens äquivalent zu (*fifo).write

von Simon (Gast)


Lesenswert?

GUIler schrieb:
> fifo->write ist übrigens äquivalent zu (*fifo).write

Wie merkt man sich sowas?
ich meine da gibts ja noch mehr wie pointer auf pointer unsw..

von Peter II (Gast)


Lesenswert?

Simon schrieb:
> Wie merkt man sich sowas?

gar nicht direkt, sonder man muss einfach verstehen was * und & macht, 
der rest ergibt sich dann.

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.