Go Down

Topic: Arduino Compiler Warung I2C Libary (Read 438 times) previous topic - next topic

Doc_Arduino

Hallo,

habe das heute im Zuge der 1.8.10 Installation versucht mit [[falltrough]] zu fixen. Klappt nicht. Man handelt sich tausend neue Warnungen und Fehler ein. Möglicherweise liegst an den .c Files statt .cpp.  Umbenennen hilft auch nicht. Man kommt vom Hunderten ins Tausende. "undefined reference" usw.
Die Wire ist .cpp
und die utility\twi ist .c

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Doc_Arduino

#16
Sep 22, 2019, 12:39 am Last Edit: Sep 22, 2019, 12:41 am by Doc_Arduino
Standardmäßig bekommen 4 Warnungen.

Code: [Select]

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function '__vector_39':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:447:49: warning: this statement may fall through [-Wimplicit-fallthrough=]
  447 |       twi_masterBuffer[twi_masterBufferIndex++] = TWDR;
      |                                                 ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:449:5: note: here
  449 |     case TW_MR_SLA_ACK:  // address sent, ack received
      |     ^~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
  530 |       if(0 == twi_txBufferLength){
      |         ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:535:5: note: here
  535 |     case TW_ST_DATA_ACK: // byte sent, ack returned


Jetzt füge ich zwischen Zeile 447 und 448 ein

Code: [Select]

[[fallthrough]]; // hinzugefuegt


damit sollte die erste Warnung weg sein. Ne, man erhält

Code: [Select]

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function '__vector_39':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:4: error: expected expression before '[' token
  448 |    [[fallthrough]];  // hinzugefuegt
      |    ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:6: error: 'fallthrough' undeclared (first use in this function)
  448 |    [[fallthrough]];  // hinzugefuegt
      |      ^~~~~~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:6: note: each undeclared identifier is reported only once for each function it appears in
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:447:49: warning: this statement may fall through [-Wimplicit-fallthrough=]
  447 |       twi_masterBuffer[twi_masterBufferIndex++] = TWDR;
      |                                                 ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:449:5: note: here
  449 |     case TW_MR_SLA_ACK:  // address sent, ack received
      |     ^~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
  530 |       if(0 == twi_txBufferLength){
      |         ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:535:5: note: here
  535 |     case TW_ST_DATA_ACK: // byte sent, ack returned
      |     ^~~~
Mehrere Bibliotheken wurden für "docINA233.h" gefunden
 Benutzt: C:\Users\Doc\Documents\Arduino\libraries\docINA233
Mehrere Bibliotheken wurden für "Wire.h" gefunden
 Benutzt: C:\Program


Verstehe ich nicht. Als wenn er vor fallthrough warnen möchte aber es das Attribut nicht kennt bzw. erkennt.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

combie

#17
Oct 23, 2019, 11:25 pm Last Edit: Oct 24, 2019, 12:50 pm by combie
Quote
habe das heute im Zuge der 1.8.10 Installation versucht mit [[falltrough]] zu fixen. Klappt nicht.
Da gibts eine GCC Spezialität, welche alle anderen Compiler wenigstens tolerieren können, auch wenn sie es nicht verstehen:
Versuche mal statt   [[fallthrough]]  dieses   /* fall through */
(ist ja schließlich C und nicht C++, also ist die C++ Doku nicht anwendbar)


Merksatz:
> Wer für alles offen ist,
> ist selten ganz dicht.

Doc_Arduino

Hallo,

wie kommt man denn darauf?  :)
Der Kommentar  /* fall trough */  hilft. Jetzt ist Ruhe. Vielen Dank.
Jetzt werden schon Kommentare verarbeitet. Verrückte Welt.   
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

combie

Hallo,

wie kommt man denn darauf?  :)
Der Kommentar  /* fall trough */  hilft. Jetzt ist Ruhe. Vielen Dank.
Jetzt werden schon Kommentare verarbeitet. Verrückte Welt.   
Durch Problem haben und dann unter Zuhilfenahme von Google einkreisen.
Dann stößt man u.U. auf sowas https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
Merksatz:
> Wer für alles offen ist,
> ist selten ganz dicht.

Doc_Arduino

Hallo,

was du so findest. Ich glaube das hätte ich im Fall des Falles überlesen das man den Kommentar genauso verwenden soll. Nett das du die Information mit uns teilst.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up