프로그래밍언어/C언어[Error]

[C언어][Error] 035. struct has no member with given name – 구조체에 존재하지 않는 멤버 접근

about_IT 2025. 4. 27. 17:02

이 오류는 정의된 구조체에 존재하지 않는 멤버를 접근하려 할 때 발생합니다. 구조체 내부에 선언되어 있지 않은 필드명을 잘못 참조하면, 컴파일러는 해당 멤버를 찾을 수 없어 오류를 발생시킵니다.


주로 오타, 멤버 이름 변경 후 반영 누락, 또는 다른 구조체와 혼동했을 때 자주 발생합니다.



● 오류 예제

#include <stdio.h>

struct Person {
    int age;
};

int main() {
    struct Person p;
    p.name = 30;  // 오류: name이라는 멤버 없음
    return 0;
}

컴파일러는 구조체 Person에 name이라는 멤버가 없기 때문에 다음과 같은 오류 메시지를 출력합니다.

error: ‘struct Person’ has no member named ‘name’


● 해결 방법

구조체 정의를 먼저 확인하고, 존재하는 멤버에만 접근해야 합니다. 만약 필요한 멤버가 없다면 구조체 정의를 수정해야 합니다.

#include <stdio.h>

struct Person {
    int age;
    char name[20];
};

int main() {
    struct Person p;
    p.age = 30;
    snprintf(p.name, sizeof(p.name), "Alice");

    printf("%d, %s\n", p.age, p.name);
    return 0;
}

출력 결과:

30, Alice


● 실전 팁

  • 구조체 멤버 이름은 선언된 구조 내에 실제 존재해야 합니다.
  • 다른 구조체와 혼동하지 않도록 구조 정의를 명확히 확인하세요.
  • IDE의 자동 완성 기능을 활용하면 오타로 인한 접근 오류를 줄일 수 있습니다.

C언어에서 구조체의 멤버는 선언된 이름만 유효하므로, 항상 정확한 구조체 정의를 바탕으로 코드를 작성해야 합니다. 실수로 존재하지 않는 멤버에 접근하면 컴파일 타임에 오류가 발생하게 됩니다.