Κατασκευή μιας C, C++ ερμηνευμένης (interpreted) .

Alexandros Diamantidis adia at noc.uoa.gr
Thu Dec 18 11:12:08 EET 2003


* George Kourtis <desoft at otenet.gr> [2003-12-18 03:25]:
> Μπορεί κανείς σε C, ή C++ να φτιάξει μια συνάρτηση (function) που 
> δεδομένου ενός δείκτη σε μια δομή (structure) να τυπώνει τό όνομα κάθε 
> πεδίου και δίπλα την τιμή του πεδίου;

Μπορεί να γίνει, ακόμα κι αν χρησιμοποιείς μεταγλωτιστή, αρκεί κατά τη
μεταγλώτιση να κρατιούνται κάπου οι απαραίτητητες πληροφορίες (για
παράδειγμα, για μια δομή, ποια πεδία έχει, με τι τύπους, και πώς είναι
οργανωμένα στη μνήμη).

Το gdb τον έχεις δοκιμάσει; Μπορεί να σου δώσει τέτοιες πληροφορίες για
ένα πρόγραμμα την ώρα που τρέχει. Δεν είναι απαραίτητο ο κώδικας να
διερμηνεύεται κατά την εκτέλεση... Βέβαια αυτό το παράδειγμα δεν
είναι με συνάρτηση μέσα στο ίδιο το πρόγραμμα, αλλά έτσι κι αλλιώς
οποιαδήποτε τέτοια δυνατότητα θα είναι κάποια επέκταση του προτύπου
της C/C++: οι γλώσσες οι ίδιες δε σου δίνουν τη δυνατότητα αυτή, οπότε
αναγκαστικά πρέπει να υλοποιηθεί είτε με κάποιες επεκτάσεις της γλώσσας,
είτε από τον προγραμματιστή.

Παρεμπιπτόντως, η δυνατότητα αυτή προσφέρεται από κάποιες γλώσσες
προγραμματισμού (Common Lisp, Python, Java και άλλες) ως στάνταρ μέρος
τους, και λέγεται «introspection». Υπάρχει ακόμα και σε υλοποιήσεις που
παράγουν κώδικα μηχανής.

-- 
Αλέξανδρος Διαμαντίδης * adia at noc.uoa.gr




More information about the Linux-greek-users mailing list