Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Warnings bei compilation anzeigen (wie printf)

  1. #1
    acidburnsw
    Gast

    Question Warnings bei compilation anzeigen (wie printf)

    Ich muss als Aufgabe printf neuprogrammieren.
    Wie kann ich Warnings anzeigen wenn das format nicht stimmt?

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Das kannst du nicht, dazu müßtest du den Formatstring zur Compilezeit parsen können, und das kannst du in C nicht.

    Das das überhaupt klappt (bei gcc zb.) liegt daran, daß printf keine 'normale' Funktion ist (bei gcc built-in), und der Compiler daher 'alles' über die Funktion weiß, und Annahmen treffen kann.
    Diese Möglichkeiten hast du nicht.

    Ganz entfernt, und doch ganz anders ist sowas ähnliches mal in C++ implementiert worden:
    http://boost.org/libs/format/index.html

  3. #3
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Natürlich geht das. Aber nur mit gcc:

    Code:
    /* folgendes define macht, dass das __attribute__
       unter nicht GNU compilern einfach mit nix ersetzt wird, damits
       dort auch, halt ohne checks, compeliert. */
    #ifndef __GNUC__
    #  define  __attribute__( x )  /* nothing */
    #endif
    
    int my_printf( void * foo, const char * fmt, ... ) __attribute__(( format( printf, 2, 3 ) ));
    int my_vprintf( void * foo, const char * fmt, va_list ap ) __attribute__(( format( printf, 2, 0 ) ));
    int my_scanf( void * foo, const char * fmt, ... ) __attribute__(( format( scanf, 2, 3 ) ));
    int my_vscanf( void * foo, const char * fmt, va_list ap ) __attribute__(( format( scanf, 2, 0 ) ));
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •