SCNdLEAST8 problem



  • Hi,

    erstmal ich bin total der neuling in c99 und würde bräuchte etwas hilfe :).
    Das ist mein Problem:

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <inttypes.h>
    
    int main(void) {
       int_least8_t i8;
       int_least32_t i32;
    
       printf("Wert fuer int_least8_t eingeben : ");
       do {scanf("%", SCNdLEAST8 , &i8 );} while (getchar() != '\n' );
    
       printf("Wert fuer int_least32_t eingeben: ");
       do {scanf("%", SCNdLEAST_32 , &i32 );} while (getchar() != '\n' );
    
       printf("i8  : " "%10" PRIdLEAST8 "\n", i8 );
       printf("i32 : " "%10" PRIdLEAST32 "\n", i32 );
    
       return EXIT_SUCCESS;
    }
    

    Bei mir wird kommt als error angezeigt:
    [Error] 'int_SCNdLEAST8' undeclared (first use in this function)
    [Error] expected ')' before 'SCNdLEAST_32'
    Wie bring ich es zum laufen?
    Wär cool wenn ein paar gute Antworten kämen.

    Mfg Michi

    ...hab DevC++ 5.5.3



  • Hast Du nicht was wichtiges vergessen .... eine Frage z.B.? :p



  • [quote="dgfsdgsg"]Hast Du nicht was wichtiges vergessen .... eine Frage z.B.? :p[/quote]

    Ja des könnte man auch noch schreiben 😃



  • Vor das 'SCNdLEAST_32' gehört kein Komma.


  • Mod

    Mach die Kommas weg. Die Makros expandieren zu Zeichenkettenliteralen.

    scanf("%" SCNdLEAST8 , &i8 );
    

    Wird nach Präprozessor zu:

    scanf("%" "irgendwas", &i8 ); // Macht Sinn, denn Literale werden zusammen gezogen zu "%irgendwas"
    

    Deine Variante hingegen wird zu:

    scanf("%", "irgendwas", &i8 ); // scanf funktioniert nicht so
    

    edit: zu langsam



  • Ihr seit einfach der Hammer
    😃 😃


Log in to reply