Kein Warnung bei Zuweisung mit Verlust???

Gast #585289
Lesenswert?

Hallo,

irgendwie zweifele ich gerade an meinen zugegeben etwas verosteteten 
C-Ken
ntnissen.

Compiler: AVR-GCC
Options -Wall -Wextra, -O0

void foo( uint16_t i )
{
   uint8_t j;


  j = i;

 ....

 tue was mit j


Sollte der Compiler in so einem Fall nicht eine Warnung auswerfen, daß
da das Highbyte auf der Strecke bleibt?



Grüße
Thomas
#585299
Lesenswert?

Thomas Schwetzer wrote:

> Sollte der Compiler in so einem Fall nicht eine Warnung auswerfen, daß
> da das Highbyte auf der Strecke bleibt?

In dem Satz widersprechen sich 2 Wörter:
  'sollte' und 'Warnung'

Der C Standard fordert von keinem Compiler irgendeine Warnung.
Wenn ein Compiler eine Warnung ausgibt, dann ist das eine
goodwill-Aktion des Compilerbauers.

Allerdings: Die von dir eingeforderte Warnung wird, wenn
überhaupt, meist nur bei Zuweisungen von Floating Point zu Integer
ausgegegben. Alles andere würde bei der überwiegenden Mehrzahl
der Programme da draussen zu einer Flut von Warnungen führen.

Manchmal hilft eine Erhöhung des Warnung-Levels (wie
pingelig der Compiler ist). Ob der gcc das kann entzieht
sich meiner Kenntnis.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren