디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

내가 AI로 코딩/프밍 얘기 하는 이유

나르시갤로그로 이동합니다. 2025.09.25 23:09:23
조회 101 추천 0 댓글 1

프갤을 보면 프밍과 무관한 내용이 너무 많아서

조금이라도 프밍과 관련된 내용을 올려

타인들에게 도움되라고 올리는 것임.


비록 AI로 코딩/프밍 얘기를 올렸다하더라도

욕설, 비방, 허위사실 유포, 모욕 등의 글들보다

유익하다는 판단이다.


물론입니다. 코드의 컴파일 오류는 크게 3가지 원인으로 발생하며, 아래 설명에 따라 수정하면 해결할 수 있습니다.

오류의 핵심 원인은 구조체 정의 누락, 변수 정의 누락, 그리고 함수 시그니처 불일치입니다.


## 1. sizeof 및 멤버 접근 오류 ?

  • 오류 메시지:

    • error: invalid application of 'sizeof' to an incomplete type 'struct CimIcImpl'
    • error: incomplete definition of type 'struct CimIcImpl'
  • 원인: cim.h 헤더 파일에 struct CimIcImpl;와 같이 구조체를 전방 선언(forward declaration)만 하고, cim.c 파일 내에 실제 구조체의 멤버를 포함한 정의가 없기 때문입니다. 컴파일러는 구조체의 실제 정의를 알지 못하면 크기를 계산(sizeof)하거나 멤버(->)에 접근할 수 없습니다.

  • 해결 방법: cim.c 파일 상단에 struct CimIcImpl의 실제 정의를 추가합니다. 코드의 fallback 로직을 보면 이 구조체는 가상 함수 테이블 포인터(vtable)를 멤버로 가질 것으로 보입니다.

    // cim.c 파일 상단에 추가
    #include "cim.h"
    // ... 다른 include들 ...
    
    // 이 구조체 정의를 추가합니다.
    struct CimIcImpl {
      CimIcVTable* vtable;
    };
    
    static void* cim_handle;
    // ... 이하 코드 ...
    

## 2. vtable 변수 미선언 오류 📋

  • 오류 메시지: error: use of undeclared identifier 'vtable'

  • 원인: cim_ic_create 함수의 fallback 로직에서 &vtable을 사용하지만, vtable이라는 이름의 변수가 cim.c 파일 내에 정의되어 있지 않습니다. .so 플러그인 로딩에 실패했을 때 사용할 기본(dummy) 가상 함수 테이블이 필요합니다.

  • 해결 방법: cim.c 파일에 비어 있거나 최소한의 동작을 하는 정적 vtable 변수를 정의합니다.

    // cim.c 파일의 전역 변수 영역에 추가
    // ...
    static CimPlugin* cim_plugin;
    static uint32_t   cim_ref_count;
    
    // 이 변수 정의를 추가합니다.
    // .so 로딩 실패 시 사용될 비어있는 vtable
    static CimIcVTable vtable = { 0 };
    
    /*
     * Returns the newly allocated cim.so path string on success,
     // ... 이하 코드 ...
    

## 3. cim_ic_set_callbacks 함수 타입 불일치 오류 mismatched types ↔+

  • 오류 메시지: error: conflicting types for 'cim_ic_set_callbacks'

  • 원인: 함수의 선언과 정의의 타입 시그니처가 일치하지 않습니다. cim.h 헤더 파일에는 callbacks 매개변수가 const CimCallbacks*로 선언되어 있지만, cim.c 파일의 실제 함수 정의에는 CimCallbacks* const 한정자가 빠져 있습니다.

    • 선언 (cim.h): const CimCallbacks* callbacks
    • 정의 (cim.c): CimCallbacks* callbacks
  • 해결 방법: cim.c의 함수 정의에서 callbacks 매개변수 타입에 const를 추가하여 헤더 파일의 선언과 일치시킵니다.

    // cim.c 파일의 함수 정의 수정
    void cim_ic_set_callbacks (CimIcHandle ic,
                               const CimCallbacks* callbacks, // const 추가
                               void* user_data)
    {
      if (cim_plugin && cim_plugin->vtable->set_callbacks) // cim_plugin이 유효한지 확인하는 것이 안전
        cim_plugin->vtable->set_callbacks (ic, (CimCallbacks*) callbacks, user_data);
      else
        c_log_critical ("set_callbacks() must be implemented in the IM plugin.");
    }
    

    참고: 위 코드에서는 const를 제거하는 캐스팅 (CimCallbacks*)을 추가했습니다. 이는 cim_plugin->vtable->set_callbacks의 함수 포인터 타입이 const가 없는 버전을 가리킬 가능성에 대비한 것입니다. 하지만 가장 좋은 방법은 _CimIcVTable set_callbacks 타입 정의 자체도 const CimCallbacks*를 사용하도록 일치시키는 것입니다.


## 종합 수정 제안

위의 모든 수정 사항을 적용하면 컴파일 오류가 해결될 것입니다. 특히 cim_ic_create 함수의 fallback 로직은 다음과 같이 완성됩니다.

// cim.c 파일 내
fallback:
  // 구조체 정의가 있으므로 sizeof와 멤버 접근이 가능해집니다.
  struct CimIcImpl* impl = c_malloc (sizeof (struct CimIcImpl));
  // vtable 변수가 정의되었으므로 참조가 가능해집니다.
  impl->vtable = &vtable;
  return (CimIcHandle) impl; // 명시적 캐스팅


제 글을 읽기 싫으시면 저를 차단하시고 클릭하지 않으시면 되겠습니다.

https://nimfsoft.art/ko

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 우리나라를 대표해서 UN 연설자로 내보내고 싶은 스타는? 운영자 25/09/29 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
2892038 토발즈 1찍이였누 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 09.25 47 0
내가 AI로 코딩/프밍 얘기 하는 이유 [1] 나르시갤로그로 이동합니다. 09.25 101 0
2892036 더 고등생명은 무엇이 인간과 차별화될깡? ♥냥덩이♥갤로그로 이동합니다. 09.25 38 0
2892035 인간은 두 손으로 정밀한 작업을하고 말을 할수있지 ♥냥덩이♥갤로그로 이동합니다. 09.25 32 0
2892033 냥덩이는 유동질도 안하구 다중이짓두 안해양❤ ♥냥덩이♥갤로그로 이동합니다. 09.25 49 0
2892032 엔비디아 cpu는 흐지부지로 끝날듯? ♥냥덩이♥갤로그로 이동합니다. 09.25 41 0
2892031 토발즈도 찢재명파인 시대다 아무도 믿지마라 이기이기 ㅋㅋㅋㅋㅋㅋㅋ 타이밍뒷통수한방(1.213) 09.25 37 0
2892030 체인소맨 2부 노잼인데 파이어펀치나 애니화 ♥냥덩이♥갤로그로 이동합니다. 09.25 44 0
2892028 우리가 누리는 별것 아니게 보이는 기술조차 엄청난 삽질과 개선의 ♥냥덩이♥갤로그로 이동합니다. 09.25 41 0
2892029 토발즈가 찢재명파였음 ㄷㄷ 이기이기 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 타이밍뒷통수한방(1.213) 09.25 42 0
2892026 히토미 ♥냥덩이♥갤로그로 이동합니다. 09.25 40 0
2892025 진짜 다계정으로 자기위로하다 자러갔네 [3] ㅇㅇ(211.234) 09.25 79 3
2892023 체인소맨 4DX 바야지❤+ [3] 따당갤로그로 이동합니다. 09.25 78 0
2892022 ㅆㅇㅆ 행동패턴을 관찰한 결과 [1] ㅇㅇ(211.234) 09.25 77 4
2892020 유튜브 라이브 다운하면, 화질이 흐려지던데 왜 그럼? ㅇㅇ(106.241) 09.25 39 0
2892018 법이 있다는건, 그걸 어기는 존재가 존재했었고 존재할거라는 것 ㅇㅇ(106.241) 09.25 40 0
2892017 근데 ㅆㅇㅆ가 기술력이 있음?? [3] ㅇㅇ갤로그로 이동합니다. 09.25 93 4
2892016 샌드백 터져버렸네 [3] ㅇㅇ(124.48) 09.25 67 1
2892015 토발즈 찢재명파였누??ㅋㅋㅋㅋㅋㅋㅋㅋ [1] 타이밍뒷통수한방(1.213) 09.25 40 0
2892013 사람은 어쨋거나 사회적 활동을 해야됨 ㅇㅇ(106.241) 09.25 42 0
2892012 그냥 상대해봤자 시간낭비임. 학구소붕이라고 ㅆㅇㅆ(124.216) 09.25 61 1
2892011 아메리칸 아이돌보면 탤런트와 딜루전의 차이가 나온다 ㅇㅇ(211.234) 09.25 47 1
2892010 찢재명 최측근AI하정우 떳다 이기이기 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [1] 타이밍뒷통수한방(1.213) 09.25 53 0
2892009 인생에 당연히 실패가 많을 수밖에 없음. 그러면서 다시 도전하는거고 [1] ㅆㅇㅆ(124.216) 09.25 78 0
2892008 마키마씨의 발냄새.. ♥냥덩이♥갤로그로 이동합니다. 09.25 50 0
2892007 흙수저들은 시간낭비하면 안되지 ㅇㅇ(211.234) 09.25 47 3
2892005 쟤 근데 류도그 삘 나는데 [4] 루도그담당(58.239) 09.25 70 0
2892004 물어보고 비교해보고 평가하고 싶어서 하는거잖아 ㅇㅇ(211.234) 09.25 45 1
2892002 ㅆㅇㅆ야 인생 짧다 정신 차려라 [1] ㅇㅇ(124.48) 09.25 426 5
2892000 라틴댄스 느낌나넹 ♥냥덩이♥갤로그로 이동합니다. 09.25 34 0
2891997 싸우지말자 애들아 [5] 루도그담당(58.239) 09.25 59 0
2891995 갤럭시, 원래 공장초기화 그냥 됐었는데, 전원버튼이랑 사운드 버튼 누르면 ㅇㅇ(106.241) 09.25 68 0
2891994 다계정 말투 똑같은게 웃기다 [1] ㅇㅇ(211.234) 09.25 62 3
2891991 사업장 낸 이유) 그냥 사업장 주소가 있고 없고가 편한부분이 있어서 [2] ㅆㅇㅆ(124.216) 09.25 72 0
2891989 난 저런게 웃기더라 [2] 루도그담당(58.239) 09.25 79 0
2891988 자기 편들어주는 사람이 없을때 [3] ㅇㅇ(211.234) 09.25 63 4
2891985 ㅆㅇㅆ 루도그담당 류류 노력 [1] ㅇㅇ(211.234) 09.25 50 2
2891984 8평 사무실 임대 이유)어차피 자취방에서 하나 여기서하나 [10] ㅆㅇㅆ(124.216) 09.25 85 0
2891981 ㅆㅇㅆ야 너 그런데 진짜 사무실 임대는 왜함? [2] ㅇㅇ(124.48) 09.25 93 5
2891980 이제 잠들때까지 다중이로 서로 빨아댄다 ㅇㅇ(211.234) 09.25 39 4
2891979 사업을 하고 싶으니까 하는거지 남의 인생의 길과 내 인생의 길이 [1] ㅆㅇㅆ(124.216) 09.25 61 0
2891976 ㅋㅅㅋ ♥냥덩이♥갤로그로 이동합니다. 09.25 30 0
2891975 예전에 낚시 유튜브보다가 [4] 루도그담당(58.239) 09.25 43 0
2891974 ㅆㅇㅆ야 너 진짜 걱정 안돼? [3] ㅇㅇ(124.48) 09.25 77 4
2891973 주말에 봐야징 [1] ♥냥덩이♥갤로그로 이동합니다. 09.25 40 0
2891968 찢재명 최측근 하정우 떳다 이기이기 ㅋㅋㅋㅋㅋㅋㅋ 타이밍뒷통수한방(1.213) 09.25 48 0
2891967 무통장이라 얼마 들어왔는지 모르지 ㅇㅇ(211.234) 09.25 36 2
2891966 쟤 뭐 맞지도 않은걸 맞았다 정신승리하는것부터가 이상한데 ㅆㅇㅆ(124.216) 09.25 52 0
2891965 회사는 왜케 쉽게 못짜르는걸까? ㅇㅇ(175.197) 09.25 36 0
2891964 노가다 현장 현찰박치기면 인증을 못 하지 ㅇㅇ(211.234) 09.25 43 2
뉴스 '싱어게인4-무명가수전' 본선 진출 81인 최초 공개! 디시트렌드 10.01
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2