Problem mit CD-Programm



  • Hallo,
    ich arbeite grade das buch "C und Linux" durch. Zwar funktionierte jedes programm super, aber jetzt halt nicht mehr 😞

    Konsolenauszug:

    cd4.c:1: error: syntax error before numeric constant
    In file included from /usr/include/_G_config.h:44,
                     from /usr/include/libio.h:32,
                     from /usr/include/stdio.h:72,
                     from cd4.c:5:
    /usr/include/gconv.h:72: error: type specifier omitted for parameter `size_t'
    /usr/include/gconv.h:72: error: syntax error before `*' token
    /usr/include/gconv.h:88: error: type specifier omitted for parameter `size_t'
    /usr/include/gconv.h:88: error: syntax error before `*' token
    /usr/include/gconv.h:97: error: type specifier omitted for parameter `size_t'
    /usr/include/gconv.h:97: error: syntax error before `*' token
    /usr/include/gconv.h:174: error: 'size_t' is used as a type, but is not defined
       as a type.
    In file included from /usr/include/stdio.h:72,
                     from cd4.c:5:
    /usr/include/libio.h:354: error: type specifier omitted for parameter `size_t'
    /usr/include/libio.h:354: error: syntax error before `)' token
    /usr/include/libio.h:363: error: type specifier omitted for parameter `size_t'
    /usr/include/libio.h:363: error: syntax error before `)' token
    /usr/include/libio.h:479: error: syntax error before `(' token
    In file included from cd4.c:5:
    /usr/include/stdio.h:286: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:286: error: syntax error before `,' token
    /usr/include/stdio.h:292: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:292: error: syntax error before `*' token
    /usr/include/stdio.h:304: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:304: error: syntax error before `)' token
    /usr/include/stdio.h:311: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:311: error: syntax error before `)' token
    /usr/include/stdio.h:353: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:353: error: syntax error before `,' token
    /usr/include/stdio.h:357: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:357: error: syntax error before `,' token
    /usr/include/stdio.h:562: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:562: error: syntax error before `*' token
    /usr/include/stdio.h:565: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:565: error: syntax error before `*' token
    /usr/include/stdio.h:575: error: type specifier omitted for parameter `size_t'
    /usr/include/stdio.h:575: error: syntax error before `*' token
    /usr/include/stdio.h:605: error: syntax error before `(' token
    /usr/include/stdio.h:611: error: syntax error before `(' token
    /usr/include/stdio.h:633: error: syntax error before `(' token
    /usr/include/stdio.h:635: error: syntax error before `(' token
    In file included from cd4.c:5:
    /usr/include/stdio.h:836: error: syntax error before `}' token
    In file included from cd4.c:6:
    /usr/include/unistd.h:312: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:312: error: syntax error before `)' token
    /usr/include/unistd.h:318: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:318: error: syntax error before `)' token
    /usr/include/unistd.h:328: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:328: error: syntax error before `,' token
    /usr/include/unistd.h:336: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:336: error: syntax error before `,' token
    /usr/include/unistd.h:356: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:356: error: syntax error before `,' token
    /usr/include/unistd.h:360: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:360: error: syntax error before `,' token
    /usr/include/unistd.h:448: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:448: error: syntax error before `)' token
    In file included from cd4.c:6:
    /usr/include/unistd.h:544: error: syntax error before `(' token
    /usr/include/unistd.h:712: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:712: error: syntax error before `)' token
    /usr/include/unistd.h:740: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:740: error: syntax error before `)' token
    /usr/include/unistd.h:769: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:769: error: syntax error before `)' token
    In file included from cd4.c:6:
    /usr/include/unistd.h:791: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:791: error: syntax error before `)' token
    /usr/include/unistd.h:798: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:798: error: syntax error before `)' token
    /usr/include/unistd.h:809: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:809: error: syntax error before `)' token
    /usr/include/unistd.h:811: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:811: error: syntax error before `)' token
    /usr/include/unistd.h:829: error: type specifier omitted for parameter `size_t'
    /usr/include/unistd.h:829: error: syntax error before `,' token
    /usr/include/stdio.h:781: error: previous declaration of `char* ctermid(char*)'
       with C++ linkage
    /usr/include/unistd.h:1040: error: conflicts with new declaration with C
       linkage
    In file included from /usr/include/sys/types.h:266,
                     from /usr/include/bits/fcntl.h:26,
                     from /usr/include/fcntl.h:33,
                     from cd4.c:8:
    /usr/include/bits/pthreadtypes.h:48: error: 'size_t' is used as a type, but is
       not defined as a type.
    /usr/include/bits/pthreadtypes.h:51: error: 'size_t' is used as a type, but is
       not defined as a type.
    In file included from /usr/include/fcntl.h:33,
                     from cd4.c:8:
    /usr/include/bits/fcntl.h:186: error: type specifier omitted for parameter `
       size_t'
    /usr/include/bits/fcntl.h:186: error: syntax error before `)' token
    cd4.c: In function `void err_exit(char*, int)':
    cd4.c:14: error: `exit' undeclared (first use this function)
    cd4.c:14: error: (Each undeclared identifier is reported only once for each
       function it appears in.)
    cd4.c:62:3: warning: no newline at end of file
    

    Und hier nochmal der code:

    /*
     cdplay.c - Audio-CD abspielen
     */
    
    # include <stdio.h>
    # include <unistd.h>
    # include <sys/ioctl.h>
    # include <fcntl.h>
    # include <linux/cdrom.h>
    
     void err_exit(char *err_text, int return_code)
     {
     perror(err_text);
     exit(return_code);
     }
    
     int main()
     {
     int fd;
     struct cdrom_tocentry toc_entry;
     struct cdrom_msf start_stop;
    
     if ((fd = open("/dev/cdrom", O_RDONLY)) == -1)
    
     err_exit("cdplay: Can’t open /dev/cdrom", 1);
    
     /* Anfang des 1. Stuecks */
     toc_entry.cdte_track = 1;
     toc_entry.cdte_format = CDROM_MSF;
     if (ioctl(fd, CDROMREADTOCENTRY, &toc_entry) == -1)
     err_exit("cdplay: ioctl() failed", 1);
     start_stop.cdmsf_min0
     = toc_entry.cdte_addr.msf.minute;
     start_stop.cdmsf_sec0
    = toc_entry.cdte_addr.msf.second;
     start_stop.cdmsf_frame0
     = toc_entry.cdte_addr.msf.frame;
    
    /* Ende des letzten Stuecks */
     toc_entry.cdte_track = CDROM_LEADOUT;
     toc_entry.cdte_format = CDROM_MSF;
     if (ioctl(fd, CDROMREADTOCENTRY, &toc_entry) == -1)
     err_exit("cdplay: ioctl() failed", 1);
     start_stop.cdmsf_min1
     = toc_entry.cdte_addr.msf.minute;
     start_stop.cdmsf_sec1
     = toc_entry.cdte_addr.msf.second;
     start_stop.cdmsf_frame1
     = toc_entry.cdte_addr.msf.frame;
    
     if (ioctl(fd, CDROMPLAYMSF, &start_stop) == -1)
     err_exit("cdplay: ioctl() failed", 1);
    
     printf("Press <RETURN> to stop playing.\n");
     getchar();
    
     if (ioctl(fd, CDROMSTOP) == -1)
     err_exit("cdplay: ioctl() failed", 1);
    
     close(fd);
     return(0);
     }
    

    Wie bringe ich das zum laufen? Ich will jetzt aber auch nicht zuviel daran herumfricklern



  • Wie versuchst Du denn, das zu kompilieren? Bei mir funktioniert das ohne Probleme, auch wenn Deine Code-Formatierung etwas gewöhnungsbedürftig ist.



  • Mit gcc ??

    <><><><><><><>
    g++ cd.c -o cd

    ./cd
    <><><><><><><>



  • Das ist ein C-Programm, kein C++-Programm, daher kompilierst Du es mit gcc und nicht mit g++.

    ~ % gcc -o test test.c
    ~ % ./test                                                                                                             cdplay: Can't open /dev/cdrom: No medium found
    ~ %
    

Anmelden zum Antworten