ついやってしまうので自戒を込めて。 (C99) #include <stdio.h> struct vector { double elts[3]; }; #define create_vector_1(a, b, c) (struct vector){ a, b, c } static inline struct vector create_vector_2(double a, double b, double c) { return (struct vector){ a, b, c }; } static void print_vector(struct vector v) { printf("(%g, %g, %g)\n", v.elts[0], v.elts[1], v.elts[2]); } int main() { { double f = 0; print_vector(cr