Frage zu MKDEV



  • Hallo,

    ich bin gerade dabei ein Linux-Kernelmodul zu programmieren. Soweit so klar, nur scheitert es leider bei der Funktion MKDEV(MAJOR, MINOR).

    zwar bin ich gerade dabei, eine Major und Minor Nummer für das Modul zu vergeben:

    const int MAJOR_NUM = 30;
    const int MINOR_NUM = 1;
    
    const int result = MKDEV(MAJOR_NUM, MINOR_NUM);
    

    wenn ichs dann kompiliere gibt mir der Compiler immer folgende Fehlermeldung:
    c:23:1 error: initializer element is not constant.

    also ich hab alles schon "const" gemacht, was passt dem Kompiler hier nicht?

    Kann mir das jemand sagen?

    danke & lg
    buzz



  • und gelöst...

    mache aus

    const int MAJOR_NUM = 30;
    const int MINOR_NUM = 1;

    #define MAJOR_NUM 30;
    #define MINOR_NUM 1;

    und schon gehts 🙂

    wieder was gelernt!

    lg
    buzzz



  • Tja das ist der Unterschied zwischen einer Compilezeitkonstante und einer Laufzeit-Pseudokonstante. Pseudo deshalb, weil der Spezifizierer const nur Readonly für die Variable anzeigt und das wie gesagt auch erst zur Laufzeit. Präprozessor und Compiler können also nur mit Compilezeitkonstanten etwas anfangen.


Anmelden zum Antworten