[I] Artikel zu Ellipsen?



  • Hallo!

    Da ich in meinem Debugartikel noch was zu selbstgebauten TRACEs schreiben will, ließe sich das schön in einen extra Artikel zu Ellipsen auslagern, denn das ist ein schönes Beispiel, an dem man sowas aufbauen kann.

    Achja, es geht hier nicht um gestauchte Kreise. 🤡
    Ellipsen sind Befehle, denen ich beliebig viele Parameter mitgeben kann - sowas wie printf.

    Also? 🙂



  • ich nenn das variadic functions. also wenn da jemand einen artikel schreibt sollte er recherchieren wie man das sonst noch so nennt 🙂

    mir fällt da zwar nicht viel ein was man dazu schreiben kann, aber schreib mal was du da für sachen ansprechen würdest.

    für ein trace bräuchte ich soetwas nämlich nicht. aber bezüglich trace könnte man ja eine lustige klasse vorstellen:

    Hab den code von meinem StackTrace gerade nicht bei der hand, aber in etwa so:

    class StackTrace
    {
    private:
      char const* func;
      static int indent;
    
      void doIndent()
      {
        for(int i=0; i<indent; ++i)
          cout<<' ';
      }
    public:
      StackTrace(char const* func)
      : func(func)
      {
        doIndent();
        cout<<'+'<<func<<'\n';
        ++indent;
      }
    
      ~StackTrace()
      {
        doIndent();
        cout<<'-'<<func<<'\n';
        --indent;
      }
    };
    
    #define STACKTRACE StackTrace __stack_trace__(BOOST_FUNCTION)
    

    natürlich mit zusätzlich noch so lustigen sachen wie FILE, LINE, etc. und im dtor kann man ja checken ob es ein normales exit war oder eine exception geflogen ist (klappt aber leider nicht bei allen compilern :()

    ist OT, cih weiss 😞



  • Naja, das fällt in die Kategorie "Wie? Sowas gibts???" denke ich.

    Ich habe es damals eben für das TRACE gebraucht und dabei diesen Artikel gelesen:
    http://www.eckart-winkler.de/computer/c/varargs.htm
    Den würde ich anhand des Beispiels zusammenfassen und dann auf das Original verweisen.

    Zu deinem OT:
    Was genau macht das? 😮
    Es gibt irgendwas rekursiv untereinander aus, soweit bin ich. 😕

    Mal so allgemein:
    Wenn der Debugartikel irgendwann veröffentlicht ist und du entschließt dich dann noch, deine StackTrace-Klasse vorzustellen - dann sollte man die ja verlinken. Sollen solche Änderungen im Nachhinein noch möglich sein?



  • estartu_de schrieb:

    Naja, das fällt in die Kategorie "Wie? Sowas gibts???" denke ich.

    Ich habe es damals eben für das TRACE gebraucht und dabei diesen Artikel gelesen:
    http://www.eckart-winkler.de/computer/c/varargs.htm
    Den würde ich anhand des Beispiels zusammenfassen und dann auf das Original verweisen.

    Zu deinem OT:
    Was genau macht das? 😮
    Es gibt irgendwas rekursiv untereinander aus, soweit bin ich. 😕

    Beim Aufruf gibt es +<Funktionsname> und bei Zerstoerung -<Funktionsname> aus. Somit
    hast du ja schon ein Trace.

    Mal so allgemein:
    Wenn der Debugartikel irgendwann veröffentlicht ist und du entschließt dich dann noch, deine StackTrace-Klasse vorzustellen - dann sollte man die ja verlinken. Sollen solche Änderungen im Nachhinein noch möglich sein?

    Vielleicht sollte man sich das doch besser im Voraus ueberlegen, oder? Artikel zu
    ueberarbeiten sollte zwar kein Problem sein (Es gibt ja auch mehrere Auflagen von
    Buechern, wo auf 'neues' eingegangen wird), aber dennoch sollte man sich das hier,
    imho, ueberlegen.

    mfg
    v R



  • Naja, mit der Verlinkung des Artikels im Nachhinein meine ich sowas wie "Siehe auch".

    Und das Stacktrace ist wirklich interessant! 👍
    Ich hab das ähnlich, muss es aber in jede Funktion extra einbauen - was extrem nervt und ich vergesse es gerne mal. 🙄



  • estartu_de schrieb:

    Ich habe es damals eben für das TRACE gebraucht und dabei diesen Artikel gelesen:
    http://www.eckart-winkler.de/computer/c/varargs.htm
    Den würde ich anhand des Beispiels zusammenfassen und dann auf das Original verweisen.

    Ja, wie gesagt. mir nicht klar warum man da nicht streams nimmt, aber wenn man das im vc++ so macht, dann erklär das auch so.

    Zu deinem OT:
    Was genau macht das? 😮
    Es gibt irgendwas rekursiv untereinander aus, soweit bin ich. 😕

    du schreibst in jede funktion dann so etwas:

    void foo()
    { STACKTRACE;
      bla();
      bar();
      baz();
    }
    

    und wenn du dann trace aktiviert hast, bekommst du dann so eine ausgabe:

    +foo()
      +bla()
      -bla()
      +bar()
        +biz()
        -biz() (exited by exception)
      -bar() (exited by exception)
    -foo() (exited by exception)
    

    bzw. mit mehr daten wie zB timestamps, datei und zeilen nummern, etc.

    Wenn der Debugartikel irgendwann veröffentlicht ist und du entschließt dich dann noch, deine StackTrace-Klasse vorzustellen - dann sollte man die ja verlinken. Sollen solche Änderungen im Nachhinein noch möglich sein?

    klar, ein artikel kann geupdated werden. ist ja quasi ne neue version des artikels 🙂 man muss ja auch fehler etc. ausbessern können.

    die klasse ist aber nur eine anregung, du musst sie auch nicht einbauen. denn nur verlinken ist doof, wenn dann muss sie auch ordentlich erklärt werden. deshalb macht es nichts wenn du dich nur auf die vc++ möglichkeiten beschränkst.

    das musst du als autor wissen. wir geben dir halt anregungen die du einbauen kannst oder auch nicht. genau deshalb denke ich ja, dass dieses magazin potential hat, weil wir genug wissen haben und einander so gut ergänzen können. dh aber nicht, dass du alles einbauen musst was wir so verzapfen 😉



  • Shade Of Mine schrieb:

    estartu_de schrieb:

    Ich habe es damals eben für das TRACE gebraucht und dabei diesen Artikel gelesen:
    http://www.eckart-winkler.de/computer/c/varargs.htm
    Den würde ich anhand des Beispiels zusammenfassen und dann auf das Original verweisen.

    Ja, wie gesagt. mir nicht klar warum man da nicht streams nimmt, aber wenn man das im vc++ so macht, dann erklär das auch so.

    Die Erklärung ist die Debugausgabe und die findest du in meinem Artikel beschrieben. 🙂
    MS hat dafür eben ein Extrafenster und noch etwas drumherum - ne Extrawurst eben.
    Außerdem bin ich gleich von C nach VC++ gesprungen (habe C++ eben "weggelassen") und kann darauf nicht so eingeben.

    Shade Of Mine schrieb:

    die klasse ist aber nur eine anregung, du musst sie auch nicht einbauen. denn nur verlinken ist doof, wenn dann muss sie auch ordentlich erklärt werden. deshalb macht es nichts wenn du dich nur auf die vc++ möglichkeiten beschränkst.

    Gut, denn mehr kann ich ja gar nicht. 😃
    Außerdem steht es ja so in der Überschrift. Die Querverweise sind ja nur, weil man eben Teile immer übertragen kann.

    Shade Of Mine schrieb:

    das musst du als autor wissen. wir geben dir halt anregungen die du einbauen kannst oder auch nicht. genau deshalb denke ich ja, dass dieses magazin potential hat, weil wir genug wissen haben und einander so gut ergänzen können. dh aber nicht, dass du alles einbauen musst was wir so verzapfen 😉

    Nö, verzapft man lieber selber - ich lese dann lieber Probe. 😃
    Im Ernst, sowas sind interessante Themen, zu denen ich gerne was lesen würde.
    Oft sind es die Dinge, die man als alltäglich sieht, die andere nicht kennen, weil sie so selbstverständlich sind.


Anmelden zum Antworten