Ich wüßte nicht, dass der avr-gcc meckert, wenn man in der main() eine funktion definiert und deklariert. Allerdings hätte der Compiler gern einen Rückgabetyp der Funktion.
sast
Ich wüßte nicht, dass der avr-gcc meckert, wenn man in der main() eine funktion definiert und deklariert. Allerdings hätte der Compiler gern einen Rückgabetyp der Funktion.
sast
雅思特史特芬
开发及研究
Mit AVR hat das nichts zu tun, der GCC oder noch algemeiner jeder C-Compiler meckert. Die Fehlermeldungen sind beispielhaft oben gezeigt
MfG KlebwaxCode:test.c:24: warning: implicit declaration of function 'warten_5sec' test.c:25: error: expected ';' before '{' token test.c:37: warning: statement with no effect test.c:37: error: expected ';' before 'StatusLED' test.c:40: warning: statement with no effect test.c:40: error: expected ';' before 'while'
Strom fließt auch durch krumme Drähte !
Um noch mal zu der Funktion in einer Funktion zu kommen (Nested Functions) . Der C Standard sieht so etwas nicht vor (Im Gegensatz zum neusten C++ Standard, nennt sich dort lambda Funktion und ermöglicht etwas ähnliches). Es kann jedoch sein dass einzelne Compiler Implementierung dass durchaus unterstützen. Notwendig ist es trotzdem nicht und in diesem Fall dürfte es wohl mehr an mangelnden C Kenntnissen liegen.
Soo, ich habs jetzt mal direkt getestet.
Abgesehen davon, was der C Standard sagt, geht eine Funktion in der main() ohne Probleme beim Compiler durch. Nur das ich nicht function(){asm volatile("nop":;} sondern void function(){asm volatile("nop":
;} verwendet habe.
Mein makefile ruft den Compiler mit CSTANDARD = -std=gnu99 auf.
sast
雅思特史特芬
开发及研究
Du hast dem Compiler gesagt, das er den Standard nicht ernst nehmen soll.Wenn es Standard C sein soll, gehört da -std=c99 hin, oder schreib ein -pedantic dazu.You may also select an extended version of the C language explicitly with -std=gnu90 (for C90 with GNU extensions), -std=gnu99 (for C99 with GNU extensions)
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Lesezeichen