Can't create Code in einer function



  • Hallo
    Ich muß mal wider mit einer blöden frage nerven

    Ich habe in einem Microchip PIC18Fxxx USB App
    folgendes Problem in folgender Routine.

    Im Orginal habe ich folgenden Ausdruck
    pROM = (ROM uint8_t*) (ProgrammedPointer - BufferedDataIndex);

    und der Compiler meckert nicht, habe auch geprüft ob das
    IF Statement stimmt.

    Habe dann das Program auf meine Bedürfnisse angepasst
    und mit den Klammer s.o. hat der Comiler gemeckert
    Can't create Code in einer function

    Habe dann herausgefunden das es so geht , ohne Klammern, nur die Frage warum,
    dies verhalten.

    pROM = (ROM uint8_t*) ProgrammedPointer - BufferedDataIndex;

    void WriteFlashBlock(void) //Use to write blocks of data to flash.
    {
    static unsigned char i;
    static unsigned char BytesTakenFromBuffer;
    static unsigned char CorrectionFactor;

    #ifdef __XC8__
    static ROM uint8_t* pROM;

    pROM = (ROM uint8_t*) ProgrammedPointer - BufferedDataIndex;
    TBLPTRU = 0x00;
    TBLPTRH = (uint8_t)((uint16_t)pROM >> 8);
    TBLPTRL = (uint8_t)pROM;
    #else
    TBLPTR = (ProgrammedPointer - BufferedDataIndex);
    #endif[/code]


  • Mod

    Dein Beitrag enthält viel Information, aber nur wenige davon von Relevanz. Interessant wären insbesondere:
    -Die vollständige Fehlermeldung.
    -Die Definitionen der im fehlerhaften Ausdruck vorkommenden Bezeichner.
    -Eine Anleitung, wie man seinen Code in diesem Forum lesbar formatiert.

    Ein allgemeiner Tipp: Programmieren bedeutet nicht, so lange zufällig Sonderzeichen im Code zu verteilen, bis der Compiler ihn akzeptiert. "Compilierbar" bedeutet nicht das gleiche wie "Korrekt". Du musst deinen eigenen Code verstehen. Du musst von jedem einzelnen Zeichen in deinem Code genau wissen, wo und warum du es setzt. Ein einzelnes geändertes Zeichen kann den Sinn eines Codestücks komplett verändern.


Anmelden zum Antworten