programing

C구조를 인라인으로 할당하려면 어떻게 해야 합니까?

shortcode 2022. 10. 5. 21:40
반응형

C구조를 인라인으로 할당하려면 어떻게 해야 합니까?

typedef struct {
    int hour;
    int min;
    int sec;
} counter_t;

코드에서 각 멤버 변수를 명시적으로 초기화하지 않고 이 구조의 인스턴스를 초기화합니다.즉, 다음과 같은 것을 하고 싶습니다.

counter_t counter;
counter = {10,30,47}; //doesn't work

10시 30분 47초

보다는

counter.hour = 10;
counter.min = 30;
counter.sec = 47;

이에 대한 구문을 기억하지 않고 구글링에서 즉시 이 작업을 수행할 방법을 찾지 못했습니다.

감사합니다!

유지보수를 위해 다음과 같이 명시적으로 식별된 변수와 함께 목록 구문을 사용하는 것이 좋습니다.

counter_t counter = {.hour = 10, .min = 30, .sec = 47};

또는 인라인으로 되돌리는 경우 다음과 같습니다.

return (struct counter_t){.hour = 10, .min = 30, .sec = 47};

변수가 선언되는 순서를 변경하는 시나리오를 상상할 수 있습니다.변수를 명시적으로 특정하지 않으면 변수의 순서를 수정하기 위해 모든 코드를 검토해야 합니다.이렇게 하면 더 깨끗하고 읽기 쉬울 수 있습니다.

초기화:

counter_t c = {10, 30, 47};

할당:

c = (counter_t){10, 30, 48};

후자는 "복합 리터럴"이라고 불립니다.

언급URL : https://stackoverflow.com/questions/4777360/how-to-assign-a-c-struct-inline

반응형