არ განსაზღვრავთ c სტილის ვარიადულ ფუნქციას?

Სარჩევი:

არ განსაზღვრავთ c სტილის ვარიადულ ფუნქციას?
არ განსაზღვრავთ c სტილის ვარიადულ ფუნქციას?
Anonim

შესაბამისად, გაშვების დროის გამოძახება C-სტილის ვარიადულ ფუნქციაზე, რომელიც გადასცემს შეუსაბამო არგუმენტებს, იძლევა განუსაზღვრელ ქცევას. … ასეთი განუსაზღვრელი ქცევა შეიძლება გამოყენებულ იქნას თვითნებური კოდის გასაშვებად.

რა არის ვარიადული ფუნქცია C-ში?

ვარიადული ფუნქციები არის ფუნქციები, რომლებსაც შეუძლიათ არგუმენტების ცვლადი რაოდენობა. C პროგრამირებისას, ვარიადული ფუნქცია პროგრამას მოქნილობას მატებს. მას სჭირდება ერთი ფიქსირებული არგუმენტი და შემდეგ შეიძლება ნებისმიერი რაოდენობის არგუმენტის გადაცემა.

Variadic ფუნქციები ცუდია?

მიზეზებია: შაბლონის ვარიადულმა ფუნქციებმა იციან მათი არგუმენტების რაოდენობაც და ტიპებიც. ისინი ტიპისთვის უსაფრთხოა, არ შეცვალოთ მათი არგუმენტების ტიპები.

როგორ გამოვაცხადოთ ვარიადული ფუნქცია C++-ში?

ვარიადული ფუნქციები არის ფუნქციები (მაგ. std::printf), რომლებიც იღებენ არგუმენტების ცვლადი რაოდენობას. ვარიადული ფუნქციის გამოსაცხადებლად, ელიფსისი გამოჩნდება პარამეტრების სიის შემდეგ, მაგ. int printf(const char ფორმატი…);, რომელსაც შეიძლება წინ უძღოდეს არასავალდებულო მძიმე.

როგორ გადასცემთ ვარიადულ პარამეტრებს სხვა ფუნქციას?

თქვენ არ შეგიძლიათ ვარიადული არგუმენტების გადაცემა ვარიადულ ფუნქციაზე. ამის ნაცვლად, თქვენ უნდა გამოძახოთ ფუნქცია, რომელიც იღებს va_list არგუმენტად. სტანდარტული ბიბლიოთეკა გთავაზობთ printf-ისა და scanf-ის ვარიანტებს, რომლებიც იღებენ va_list-ს; მათ სახელებს აქვთ პრეფიქსი v.

გირჩევთ: