Supraîncărcarea Funcția în C

Standard C11 C au fost macro-uri generice care vă permit să creați o funcție de scop general. Funcția macro Generic vă permite să alegeți în funcție de tipul de argumente trecut la funcția. Este, în unele privințe, similare supraîncărcării metode de tip argument în mai multe limbi, cu toate acestea, nu este dinamică expediere - determinarea de tip argument apare doar în timpul compilării.

Deoarece această inovație C 11, necesitatea unei noi versiuni a compilatorului care acceptă standardul. De exemplu, folosind versiunea gcc 5.3.0 cu steagul -std = C11. Pe Windows fara probleme pune pachetul MinGW, care include toate instrumentele necesare.

Luați în considerare un exemplu simplu: funcția returnează argumentul trecut plus unu. În primul rând, vom defini toate funcțiile care pot fi efectuate cu toate tipurile de argumentele pe care avem nevoie

În continuare, macro

Acest sistem este similar cu declarația de comutare. În loc de foo substituie una dintre funcțiile, și apoi (X) - o provocare pentru acest argument. Valoarea implicită - în cazul în care tipul nu poate fi determinată. În cazul în care tipul nu este definit și nu există nici o valoare implicită, sau nu poate fi utilizat de funcția implicit, aceasta este o greșeală. Iată un program de

Pentru o funcție cu două argumente un pic mai complicate, este necesar să se identifice toate combinațiile. În cazul nostru, funcția poate accepta argumente de tip float si int, ori le și să se întoarcă un

Desigur, puteți în loc de trei macro-uri pentru a combina toate într-un singur

Iată un alt exemplu: un macro care afișează numele tipului a trecut să-l

Notă caracteristică importantă - fără explicită „a“ va fi tratat ca int, string și modificabil, deși încercarea de a schimba va duce la eroare. Pentru opredeleniyatipa exacte poate duce în mod evident

Tipul poate fi un argument macro

ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 [email protected] studenți Stepan Sypachev