75.9 연습문제: 구조체를 선언하고 초기화하는 매크로 정의하기

다음 소스 코드를 완성하여 1.0 2.0 3.0이 출력되게 만드세요.

practice_init_struct_macro.c

#include <stdio.h>

struct Point3D {
    float x, y, z;
};

#define ____________________________________________________________________

int main()
{
    INIT_POINT3D(p1, 1.0f, 2.0f, 3.0f);

    printf("%.1f %.1f %.1f\n", p1.x, p1.y, p1.z);

    return 0;
}

실행 결과

1.0 2.0 3.0

정답

INIT_POINT3D(var, x, y, z) struct Point3D var = { x, y, z }

해설

매크로를 INIT_POINT3D(p1, 1.0f, 2.0f, 3.0f);와 같이 사용하고 있으므로 변수 이름은 p1, 멤버 x, y, z의 값은 1.0, 2.0, 3.0으로 정해져 있습니다. 따라서 struct Point3D var = { x, y, z }와 같이 구조체 변수를 선언하면서 값을 초기화 해주면 됩니다.