#include <stdio.h>
typedef void show_type(int y,int x); /* show_type - typ który opisuje funkcje o takim prototypie */
void showyx
(int y
,int x
) { printf("(%d,%d)\n",y
,x
); } /* jedna funkcja o takim prototypie */ void showxy
(int y
,int x
) { printf("(%d,%d)\n",x
,y
); } /* druga funkcja o takim prototypie */
void foo(show_type *fun /*, ... */ ) /* funkcja przyjmująca wskaźnik na taki prototyp */
{
/* ... */
int x=2,y=3;
fun(y,x);
/* ... */
}
int main()
{
foo(&showyx);
foo(&showxy);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHZvaWQgc2hvd190eXBlKGludCB5LGludCB4KTsgLyogc2hvd190eXBlIC0gdHlwIGt0w7NyeSBvcGlzdWplIGZ1bmtjamUgbyB0YWtpbSBwcm90b3R5cGllICovCgp2b2lkIHNob3d5eChpbnQgeSxpbnQgeCkgeyBwcmludGYoIiglZCwlZClcbiIseSx4KTsgfSAvKiBqZWRuYSBmdW5rY2phIG8gdGFraW0gcHJvdG90eXBpZSAqLwp2b2lkIHNob3d4eShpbnQgeSxpbnQgeCkgeyBwcmludGYoIiglZCwlZClcbiIseCx5KTsgfSAvKiBkcnVnYSBmdW5rY2phIG8gdGFraW0gcHJvdG90eXBpZSAqLwoKdm9pZCBmb28oc2hvd190eXBlICpmdW4gLyosIC4uLiAqLyApIC8qIGZ1bmtjamEgcHJ6eWptdWrEhWNhIHdza2HFum5payBuYSB0YWtpIHByb3RvdHlwICovCiAgewogICAvKiAuLi4gKi8KICAgaW50IHg9Mix5PTM7CiAgIGZ1bih5LHgpOwogICAvKiAuLi4gKi8KICB9CgppbnQgbWFpbigpCiAgewogICBmb28oJnNob3d5eCk7CiAgIGZvbygmc2hvd3h5KTsKICAgcmV0dXJuIDA7CiAgfQ==