Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να χρησιμοποιήσετε Μεταβλητή λειτουργιών των παραμέτρων σε C + +

Οι περισσότερες λειτουργίες δέχονται ένα σταθερό αριθμό των επιχειρημάτων . Ορισμένες εφαρμογές, ωστόσο, να απαιτούν λειτουργίες για να δεχθεί μεταβλητών παραμέτρων. Ένα πολύ γνωστό παράδειγμα είναι η λειτουργία εκτύπωσης του C. Για τις περιπτώσεις αυτές , C + + προσφέρει μια ισχυρή λύση που σας επιτρέπει ο compiler αποκρυπτογραφήσει τα επιχειρήματα κατά το χρόνο εκτέλεσης . Διαβάστε για ένα φροντιστήριο που δείχνει πώς να εφαρμόσει αυτές τις λειτουργίες . Τα πράγματα που θα χρειαστείτε Κατάλογος τίτλων C + +
C + + compiler με IDE , όπως το Microsoft Visual C + +
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Προσθέστε το αρχείο της βιβλιοθήκης STDARG.H σε το πρόγραμμά σας . Αυτό είναι όπου μπορείτε να ορίσετε τις μακροεντολές . Από την πρώτη γραμμή του αρχείου , ένθετο # include . 2

Χρησιμοποιήστε το va_arg μακροεντολές , va_start και v_end που συνεργάζονται με την va_type στο stdarg.h .
Εικόνων 3

Καθιερώστε μια μεταβλητή τύπου va_list να λειτουργήσει ως δείκτης λίστα .
Η 4

Δείτε τις επιμέρους παραμέτρους, χρησιμοποιώντας τη μακροοικονομική va_arg . Βρείτε έναν τρόπο να πει την μακροοικονομική va_arg τι είδους επιχείρημα που θέλετε να ανακτήσετε να παρέχει το σωστό αριθμό των byte από τη στοίβα .
5

Πετάξτε το αποτέλεσμα από το βήμα 4 με τον τύπο που θέλετε να είναι .
Η 6

Καλέστε το μακρο va_end να τελειώσει την επεξεργασία των μεταβλητών παραμέτρων .
Η 7

Κοιτάξτε το παρακάτω παράδειγμα που δείχνει τα βήματα 2 έως 6. Myprintf συνάρτηση δέχεται ένα string format που καθορίζει τον τύπο και τη θέση του κάθε επιχειρήματος . Μετά το string format είναι η λίστα των επιχειρημάτων . Η λειτουργία εκτυπώνει τα επιχειρήματα . Για λόγους απλότητας μπορεί να επεξεργαστεί μόνο int , float και τα χαρακτηριστικά :
//δήλωση
ακυρώσουν myprintf ( char * format , ... ) ?
//Defintion
άκυρη myprintf ( char * format , . .. ) {
va_list vl ?
int i ?
va_start ( vl , args) ?
για ( i = 0 ? args [ i ] = ' \\ 0'? ! + + i ) {
ένωση any_t {
int i ?
float f ?
char c ?
} οποιαδήποτε ?
αν ( args [ i ] == ' i') ​​{
any.i = va_arg ( vl , int) ?
printf ( " % i \\ n" , any.i ) ?
} else
αν ( args [ i ] == 'f' ) {
any.f = va_arg ( vl , float ) ?
printf ( " % f \\ n" , any.f ) ?
} else
αν ( args [ i ] == ' c' ) {
any.c = va_arg ( vl , char ) ?
printf ( " % c \\ n" , any.c ) ? }

else {
ρίξει SomeException ?
}
va_end ( vl ) ? }

Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα