Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

variadic macros

Îåêßíçóå áðü ôï ìÝëïò kostbill. Τελευταία δημοσίευση από το μέλος kostbill στις 21-05-2006, 14:24. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-05-2006, 14:00 12922

    variadic macros

    Καλησπέρα.

    Πρώτο μου post.

    Θέλω να φτιάξω μια variadic macro και το microsoft visual studio 6 δε το δέχεται.
    Το περίεργο είναι οτι σε κάποια στιγμή έκανα απλά copy paste απο ένα παράδειγμα
    κώδικα που έχουν στο msdn και πάλι μου έβγαζε λάθη.

    http://msdn2.microsoft.com/en-us/library/ms177415.aspx

    Μήπως δεν υποστηρίζεται απο την microsoft αυτο το feature?

    Γνωρίζει κανείς τι πρέπει να κάνω για αυτό το θέμα?

    Ευχαριστώ πολύ.

    P.S. Απο απροσεξία, το ρώτησα και στο forum της Visual Basic.
  •  19-05-2006, 01:58 12969 σε απάντηση της 12922

    Απ: variadic macros

    Για να περιγράφεται στο MSDN, μάλλον υποστηρίζεται. Μήπως χρησιμοποιείς παλιά έκδοση της C++? Μήπως ο κώδικας σου περιέχει λαθάκια? Ένα λαθάκι να κάνεις με τα macro και χάνεσαι. Θα πρέπει να μας δώσεις ένα παράδειγμα του κώδικα που χρησιμοποίησες και του error που βγαίνει.

    Γενικά πάντως, καλό είναι να αποφεύγεις τα macros. Οτιδήποτε σχεδόν γίνεται με macros γίνεται και με functions και templates και με πολύ λιγότερα λάθη.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-05-2006, 09:02 12978 σε απάντηση της 12969

    Απ: variadic macros

    Καλημέρα.

    Όπως είπα, το πρόγραμμα είναι copy paste απο το ακόλουθο site

    http://msdn2.microsoft.com/en-us/library/ms177415.aspx

    και είναι το εξής (επίσης, με δικές μου παραλλαγές πάλι δε δούλεψε)

    // variadic_macros.cpp
    #include <stdio.h>
    #define EMPTY

    #define CHECK1(x, ...) if (!(x)) { printf(__VA_ARGS__); }
    #define CHECK2(x, ...) if ((x)) { printf(__VA_ARGS__); }
    #define CHECK3(...) { printf(__VA_ARGS__); }
    #define MACRO(s, ...) printf(s, __VA_ARGS__)

    int main() {
    CHECK1(0, "here %s %s %s", "are", "some", "varargs1(1)\n");
    CHECK1(1, "here %s %s %s", "are", "some", "varargs1(2)\n"); // won't print

    CHECK2(0, "here %s %s %s", "are", "some", "varargs2(3)\n"); // won't print
    CHECK2(1, "here %s %s %s", "are", "some", "varargs2(4)\n");

    // always invokes printf in the macro
    CHECK3("here %s %s %s", "are", "some", "varargs3(5)\n");

    MACRO("hello, world\n");
    // MACRO("error\n", EMPTY); would cause C2059
    }
    Θέλω να χρησιμοποιήσω macros επειδή δουλεύω σε μια έτοιμη πλατφόρμα και
    δε μπορώ να αλλάξω μερικά πράγματα.

    Ευχαριστώ πολύ.
  •  19-05-2006, 09:07 12979 σε απάντηση της 12978

    Απ: variadic macros

    Επίσης, χρησιμοποιώ το microsoft visual studio 6.
  •  19-05-2006, 09:43 12980 σε απάντηση της 12978

    Απ: variadic macros

    Το παράδειγμα όμως είναι για Visual Studio 2005. Στο 2005 παίζει χωρίς πρόβλημα.

    Το καλύτερο που έχεις να κάνεις είναι να χρησιμοποιήσεις μια πιο φρέσκια έκδοση της C++. Αυτή που χρησιμοποιείς είναι ήδη 8 ετών και πολλά πράγματα δεν υπήρχαν καν τότε στην C++, πόσο μάλλον στη Visual C++ 6. Ο παλιός κώδικας παίζει χωρίς πολλές μετατροπές
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-05-2006, 10:21 12983 σε απάντηση της 12979

    Απ: variadic macros

    Το καλό είναι ότι σε Visual Studio 2005 τα variadic macros υποστηρίζονται μια χαρά.

    Το κακό είναι ότι τα variadic macros υποστηρίζονται μόνο στο Visual Studio 2005. Sad [:(]

    Δυστυχώς, καταλήγουμε σ'αυτά που λέει ο Παναγιώτης. Είτε αλλάζεις Visual Studio, είτε τον κώδικα.

  •  21-05-2006, 14:24 13064 σε απάντηση της 12922

    Απ: variadic macros

    Ευχαριστώ για τις απαντήσεις σας.

    Θα ρωτήσω άν έχουν το 2005 στην δουλειά,

    αλλιώς θα χρησιμοποιηθούν συναρτήσεις :)

    Ευχαριστώ πολύ.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems