PDA

View Full Version : Θέλω κώδικα μόνο για debugging...


yop
05-07-2005, 08:47
Γρηγορη ερώτηση... Υπάρχει τρόπος (πχ κάποια preprocessor command) ώστε να έχω ένα κομμάτι κώδικα να τρέχει μόνο όταν κάνω compile με debug info και να μην παίζει όταν κάνω compile χωρις debug info? GCC 3.3.3

circular
05-07-2005, 09:00
νομίζω πως μπορείς να βάλεις preprocessor directives:

#ifdef(_DEBUG)
...
#endif

DarthMoul
05-07-2005, 09:00
Γρηγορη ερώτηση... Υπάρχει τρόπος (πχ κάποια preprocessor command) ώστε να έχω ένα κομμάτι κώδικα να τρέχει μόνο όταν κάνω compile με debug info και να μην παίζει όταν κάνω compile χωρις debug info? GCC 3.3.3
Από όσο ξέρω όχι. Η λογική της C είναι πως κάνεις debugging και αφού η εφαρμογή γίνει stable, κάνεις έναν compile χωρίς debug info για να δημιουργήσεις distribution binaries.

DarthMoul
05-07-2005, 09:01
νομίζω πως μπορείς να βάλεις preprocessor directives:

#ifdef(_DEBUG)
...
#endif

To περνάει ο GCC αυτό; Δεν το ήξερα. Thanks circular :023:

circular
05-07-2005, 09:13
To περνάει ο GCC αυτό; Δεν το ήξερα. Thanks circular :023:

Δεν είμαι σίγουρος, πάντως στην ανάγκη θα μπορούσες να βαζεις καποιο δικό σου define σε κάποιο header ανάλογα με το αν θες να κάνεις debug build ή optimized build να το βάζεις σε σχόλια.

yop
05-07-2005, 10:05
Ναι έτσι παίζω τώρα αλλά έχω κώδικα που έχει γράψει πολύς κόσμος και γίνεται λίγο πανυγήρι με τα ΤΑΔΕ_DEBUG ΔΕΙΝΑ_DEBUG, με νιώθετε πιστεύω...

chaos
05-07-2005, 17:34
Εγω θα σου προτεινα να τις οργανωσεις με τις ντιρεκτιβες #if (statement),#elif.
Η συνταξη παει καπως ετσι.
#if flag=1
...κωδικας...
#elif flag=2
...κωδικας...
οσες #elif χρειαζεσαι
#endif

ετσι μπορεις να οργανωσεις ποιος κωδικας και υπο ποιες συνθηκες θα μεταγλωτιστει.
Για παραδειγμα εαν θες να διημιουργησεις binaries για δυο διαφορετικα λειτουργικα τα οποια εχουν διαφορετικα headers τοτε ρυθμιζεις αναλογως τις επιλογες σου για καθε λειτουργικο ωστε ο κωδικας που δεν ειναι συμβατος να εξαιρειται τις μεταγλωτισης.