Συνεπώς, μια κλήση χρόνου εκτέλεσης σε μια μεταβλητή συνάρτηση τύπου C που διαβιβάζει ακατάλληλα ορίσματα αποδίδει απροσδιόριστο συμπεριφορά. … Μια τέτοια απροσδιόριστη συμπεριφορά θα μπορούσε να χρησιμοποιηθεί για την εκτέλεση αυθαίρετου κώδικα.
Τι είναι η μεταβλητή συνάρτηση στο C;
Οι
Οι μεταβλητές συναρτήσεις είναι συναρτήσεις που μπορούν να λάβουν έναν μεταβλητό αριθμό ορισμάτων. Στον προγραμματισμό C, μια μεταβλητή συνάρτηση προσθέτει ευελιξία στο πρόγραμμα. Χρειάζεται ένα σταθερό όρισμα και στη συνέχεια μπορεί να περάσει οποιοσδήποτε αριθμός ορισμών.
Είναι κακές οι συναρτήσεις Variadic;
Οι λόγοι είναι: Οι μεταβλητές συναρτήσεις προτύπου γνωρίζουν τόσο τον αριθμό όσο και τους τύπους των ορισμάτων τους. Είναι type-safe, μην αλλάζετε τους τύπους των ορισμάτων τους.
Πώς δηλώνετε μια μεταβλητή συνάρτηση στη C++;
Οι μεταβλητές συναρτήσεις είναι συναρτήσεις (π.χ. std::printf) που λαμβάνουν έναν μεταβλητό αριθμό ορισμάτων. Για να δηλώσετε μια μεταβλητή συνάρτηση, εμφανίζεται μια έλλειψη μετά τη λίστα των παραμέτρων, π.χ. int printf(const char format…);, του οποίου μπορεί να προηγείται ένα προαιρετικό κόμμα.
Πώς μεταβιβάζετε μεταβλητές παραμέτρους σε άλλη συνάρτηση;
Δεν μπορείτε να μεταβιβάσετε τα μεταβλητά ορίσματα σε μια μεταβλητή συνάρτηση. Αντίθετα, πρέπει να καλέσετε μια συνάρτηση που παίρνει μια va_list ως όρισμα. Η τυπική βιβλιοθήκη παρέχει παραλλαγές του printf και του scanf που λαμβάνουν μια λίστα va_list. τα ονόματά τους έχουν το πρόθεμα v.