![]() |
"C" Compiler Problem - Just for fun
Hallo
Ich mache mich zur seit ein wenig rar in diesem Forum, weil ich mit µC rumspiele Ich verstehe PIC16 und PIC18 (Microchip) ganz gut. (XC8 Compiler) Nun bin ich auf PIC32 umgestiegen weil ich dachte, der ist sehr Leistungsfähig bei kleinem Geld, also Microchip liefer mit MPLAB X auch eine Java Basierende Oberfläche für C und C++ und einen Composer mit dem Namen Harmony. ![]() Nur das hat Macken ohne Ende eines möchte ich hier vorstellen
Code:
Tia, der Compiler überspringt das einfach und bei einem Normalen Error Level
#define LCDIF_PBWIDTH4BITS (0x01 << 6)
startOfLcdIfObjs->lcdIfFlags |= LCDIF_PBWIDTH4BITS; // It's doing this , just for Testing if (busWidth == 4) { Nop(); Nop(); startOfLcdIfObjs->lcdIfFlags |= LCDIF_PBWIDTH4BITS; // <--- Does not like this startOfLcdIfObjs->lcdIfFlags |= (busDataShift & // It's doing this LCDIF_SHIFTDATAMASK); bekommst Du auch keine Meldung und wenn habe ich sie nicht gesehen. Damit kann man Stunden verbringen, bis man darauf kommt. C ist wirklich praktisch für µC aber hier ist es echt ärgerlich. Ich wünsche euch einen schönen Sonntag. |
AW: "C" Compiler Problem - Just for fun
Könnte es sein dass das Define auch mit der größeren, z.B. long int, definiert werden muss ?
Delphi-Quellcode:
Rollo
//also von
#define LCDIF_PBWIDTH4BITS (0x01 << 6) // zu #define LCDIF_PBWIDTH4BITS (0x0001 << 6) //oder #define LCDIF_PBWIDTH4BITS (0x00000001 << 6) |
AW: "C" Compiler Problem - Just for fun
Zitat:
Klingt ein bisschen noch Optimierungskram. Gerade bei MMIO ist volatile ganz nützlich :wink: |
AW: "C" Compiler Problem - Just for fun
Ja, aber 0x01 wird womöglich als Byte interpretiert und abgeschnitten, während 0x00000001L mit den vollen 32 Bit rechnen kann.
Die Frage ist vielleicht welcher Typ ist startOfLcdIfObjs->lcdIfFlags, Byte oder long ? Könnte so ein Problem mit der implizierten Typumwandlung sein. Rollo |
AW: "C" Compiler Problem - Just for fun
Zitat:
Code:
startOfLcdIfObjs->lcdIfFlags |= LCDIF_PBWIDTH4BITS; // It's doing this , just for Testing
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz