Übrigens. So etwas
ist meist keine gute Idee.
Als Wahrheitswert für 'wahr' ist in C alles definiert, was nicht 0 ist.
D.h. wenn flag_UART_PC den Wert 5 hat, dann ist das ebenfalls 'wahr'.
Wenn du den Vergleich so schreibst, dann nagelst du die Variable darauf
fest, dss sie genau den Wert 1 haben muss (denn 'true' ist nichts
anderes als 1).
In C ist weniger oft mehr. Vergleiche auf true oder false schreibt man
nicht, indem man explizit mit einem Wert vergleicht, sondern indem man
ausnutzt, dass automatisch ein Wert von 0 als false gilt und alle
anderen Werte als true.
Man schreibt also
bzw. in der Umkehrung
und ist damit flexibler als mit den Versionen
1 | if( flag_UART_PC == true )
|
bzw.
1 | if( flag_UART_PC == false )
|
und mit entsprechend vernünftig gewählten Variablennamen, liest sich das
dann auch dementsprechend gut und weniger holprig als mit den expliziten
Vergleichen.
Die Variante
1 | if( flag_UART_PC == true )
|
hat so etwas vom 'weißen Schimmel'. Wenn flag_UART_PC sowieso ein
boolscher Wert ist, dann ist es doppelt gempoppelt, wenn man den mit
true (bzw. false) vergleicht. flag_UART_PC selbst ist bereits ein
boolsches Ergebnis. Das braucht man nicht mit 'true' zu vergleichen um
daraus dann wieder einen boolschen Wert zu generieren. Selbst wenn
flag_UART_PC tatsächlich immer nur die Werte true bzw. false haben wird,
kann das Ergebnis des Vergleichs mit true nie anders ausfallen als das,
was sowieso schon in der Variablen steht (es sei denn, da steht zb 5
drinnen)