template



  • kann mir einer sagen was templates sind und wozu man es brauch?



  • templates gibt es in ANSI C nicht, dass ist eine C++ Sache. In C++ dienen Templates dazu um ein Konzept unabhängig vom Typ zu implementieren. Such mal bei google nach "generisches programmieren"



  • thx.

    aber ich bin mir sicher das das prog was ich mache in c und nicht c++ ist!



  • Dann wirst Du dir was aus Makros zusammenbasteln müssen.



  • so kannst du das zB. machen

    #include <stdio.h>
    
    //"Template" Code
    #define TEMPLATE_TAUSCHE(type) \
    \
    void type##tausche(type *a, type *b) { \
      type c; \
      c=*a; \
      *a=*b; \
      *b=c; \
    }
    
    TEMPLATE_TAUSCHE(int); //Code erzeugen
    
    int main() {
      int a=2,b=4;
      printf("%d %d\n",a,b);
      inttausche(&a,&b); //Funktion benutzen
      printf("%d %d\n",a,b);
      return 0;
    }
    


  • Das klappt aber nicht mit Zeigern.



  • Wenn mit template nicht im Sinne von C++ gemeint ist, bedeutet template einfach Vorlage.

    An ettlichen Stellen werden Programmieren / Kodieren Templates (Vorlagen) an die Hand gegeben wie sie bestimmte Aufgaben erledigen sollen. Das umfast So Dinge wie die At der Kommentierung, die Wahl der Variablennamen, die Anordnung von Deklarationen und Funktionen im Source code.

    z.B. Aufbau eines C-Programms

    Allgemeine Includes
    ProgrammSpezifische Includes
    Allgemeine Typedefs,
    Allgemeine Strukturen,
    Allgemeine Prototypen,
    Allgemeine Globale

    AufgabenSpezifische Typedefs,
    AufgabenSpezifische Strukturen,
    AufgabenSpezifische Prototypen,
    AufgabenSpezifische Globale

    Allgemeine Funktionen

    Letzte allgemeine Funktion. int main(...)
    {
    }
    AufgabenSpezifische Funktionen
    ....

    oder es wird sogar eine Beispielcode (Template) bereitgestellt, der die Firmenspezifischen Dinge schon
    beinhaltet, so daß nur noch die Aufgabenspezifischen Dinge codiert werden müssen.
    Hintergrund sind oftmals Wartbarkeit und Formale Vorgaben der Qualitätssicherung.



  • @cd9k
    das bekommt man aber auch leicht hin mit aenderungen

    #define PTRTEMPLATE_FOO(type,ptr) \
    void type##ptrfoo(type ptr a) { /*...*/ }
    
    PTRTEMPLATE_FOO(int,**);
    

Anmelden zum Antworten