Moenie 'n c-styl variadiese funksie definieer nie?

INHOUDSOPGAWE:

Moenie 'n c-styl variadiese funksie definieer nie?
Moenie 'n c-styl variadiese funksie definieer nie?
Anonim

Gevolglik lewer 'n runtime-oproep na 'n C-styl variadiese funksie wat onvanpaste argumente deurgee ongedefinieerde behavior. … Sulke ongedefinieerde gedrag kan uitgebuit word om arbitrêre kode uit te voer.

Wat is variadiese funksie in C?

Variadiese funksies is funksies wat 'n veranderlike aantal argumente kan neem. In C-programmering voeg 'n variadiese funksie buigsaamheid by die program. Dit neem een vaste argument en dan kan enige aantal argumente deurgegee word.

Is Variadiese funksies sleg?

Die redes is: Variadiese sjabloonfunksies ken beide die aantal en tipes van hul argumente. Hulle is tipe-veilig, moenie tipes van hul argumente verander nie.

Hoe verklaar jy 'n variadiese funksie in C++?

Variadiese funksies is funksies (bv. std::printf) wat 'n veranderlike aantal argumente neem. Om 'n variadiese funksie te verklaar, verskyn 'n ellips na die lys parameters, bv. int printf(const char-formaat…);, wat deur 'n opsionele komma voorafgegaan kan word.

Hoe gee jy variadiese parameters na 'n ander funksie deur?

Jy kan nie die variadiese argumente na 'n variadiese funksie oordra nie. In plaas daarvan, jy moet 'n funksie noem wat 'n va_list as argument neem. Die standaard biblioteek verskaf variante van printf en scanf wat 'n va_list neem; hulle name het die voorvoegsel v.

Aanbeveel: