3
使用したいC
汎用選択では、1つではなく2つの要素を使用して関数を推論します。C 2種類の汎用選択
#define draw(X, Y) \
_Generic((X), \
struct circle: draw_circle, \
struct square: draw_square \
)(X, Y)
struct circle{};
struct square{};
void draw_circle_with_int(struct circle a, int i){}
void draw_circle_with_double(struct circle a, double d){}
void draw_square_with_int(struct square a, int i){}
void draw_sqaure_with_double(struct square a, double d){}
int main(void)
{
struct circle c;
/* draw(c, 3); */ // `draw_circle_with_int`
/* draw(a, 3.5); */ // `draw_circle_with_double`
struct square s;
/* draw(s, 5); */ // `draw_square_with_int`
/* draw(s, 5.5); */ // `draw_square_with_double`
}
draw(X, Y)
で
、X
などY
関数呼び出しを決める必要があります。 のは、私はこのC
ファイルがあるとしましょう。これを行うにはいくつかの方法がありますか?
をあなたはおそらく、これらの構造体のパラメータの代わりに 'constの構造体型*'を行う必要があります。 – Lundin