디시인사이드 갤러리

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

갤러리 본문 영역

C++ 포팅하며 느낀 점 ㅎㅎ

*루비*갤로그로 이동합니다. 2025.03.10 11:25:29
조회 72 추천 0 댓글 2

C 보다 가독성이 심각하게 떨어짐 ㅎㅎ

그래서.. 흠..

C++를 래핑하여

C에서 사용하는 방법은 어떨까 고민 중이긴한데.. ㅎㅎ

Qt6을 C 로 래핑해서 사용하는 건 안 좋은 것 같고,

아..

걍.. Qt로 C로 래핑해서 쓸까.

아.. 고민되네 ㅎㅎ


-----

QtCoreApplication의 모든 기능을 C로 완전히 래핑하는 것은 이론적으로 가능하지만, 이는 실질적으로 상당히 복잡한 작업입니다. 그 이유는 다음과 같습니다:

1. Qt의 복잡성

  • Qt는 객체 지향 방식으로 설계된 C++ 라이브러리로, 다중 상속, 가상 함수, 시그널-슬롯 메커니즘 등 C 언어에서 직접적으로 지원되지 않는 기능들을 많이 활용합니다.

  • 이 기능들을 C로 옮기려면 상당한 작업이 필요하며, 특히 시그널-슬롯 메커니즘과 같은 특성은 상당한 양의 코드와 추상화가 필요합니다.

2. 함수 수 및 범위

  • QCoreApplication은 Qt의 핵심 클래스 중 하나로, 많은 메서드와 멤버 함수가 포함되어 있습니다. 이러한 모든 함수를 C로 래핑하는 것은 시간이 많이 들고 유지보수가 어려울 수 있습니다.

3. 문제점 및 한계

  • C는 객체 지향적 특성을 가지지 않으므로, 클래스 멤버 변수나 메서드 호출을 래핑하기 위해 구조체와 별도의 함수 세트를 만들어야 합니다.

  • Qt의 시그널-슬롯 메커니즘을 C로 변환하는 것은 특히 까다롭습니다. 이를 구현하려면 함수 포인터와 콜백 메커니즘을 사용하거나 별도의 C++ 지원 라이브러리를 추가적으로 활용해야 할 것입니다.

가능한 접근법

QCoreApplication의 주요 기능들만 선택적으로 래핑하는 것이 더 현실적입니다. 주로 사용되는 함수만 C 스타일 함수로 제공하면 효율성을 높이고 복잡성을 줄일 수 있습니다.

만약 특정 기능이나 사용 시나리오가 있다면, 그에 맞게 구현 방향을 더 자세히 안내해 드릴 수 있습니다! 😊

----

안 좋다하네.

아 짜증나 시간도 없어 죽겠는데.

일단, Qt 는 C++로 사용하고,

C와 c++에서 차이나는 부분은.. 흠...

동적 할당은 실패할 수 있으니,

전에 하듯, 에러 처리하는 래퍼 만들어야할 것이고. 흠.

레퍼 만들지 말까.


void* c_malloc (size_t size)

{

  if (!size)

    return nullptr;


  void* mem = malloc (size);


  if (mem)

    return mem;


  perror (__PRETTY_FUNCTION__);

  abort ();

}


void* c_calloc (size_t number, size_t size)

{

  if (!number || !size)

    return nullptr;


  void* mem = calloc (number, size);


  if (mem)

    return mem;


  perror (__PRETTY_FUNCTION__);

  abort ();

}


void* c_realloc (void* ptr, size_t size)

{

  if (!size)

  {

    free (ptr);

    return nullptr;

  }


  void* mem = realloc (ptr, size);


  if (mem)

    return mem;


  perror (__PRETTY_FUNCTION__);

  abort ();

}


void* c_memdup (const void* src, size_t size)

{

  if (!size)

    return nullptr;


  void* dst = c_malloc (size);

  return memcpy (dst, src, size);

}


CRef* c_ref_new (uint8_t* data, CFreeFunc data_free_func)

{

  CRef* ref = c_malloc (sizeof (CRef));


  ref->data      = data;

  ref->free_func = data_free_func;

  ref->count = 1;


  return ref;

}


void c_ref_inc (CRef* ref)

{

  if (ref == nullptr)

    return;


  ref->count++;

}


void c_ref_dec (CRef* ref)

{

  if (ref == nullptr)

    return;


  ref->count--;


  if (ref->count == 0)

  {

    if (ref->free_func)

      ref->free_func (ref->data);


    free (ref);

  }

}


C 코드로는 이렇게 깔끔한데, C++만 들어갔다하면

코드가 시궁창처럼 드러워져서..

코딩하는 맛이 떨어진단 말야.

ㅎㅎ

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 매니저들에게 가장 잘할 것 같은 스타는? 운영자 25/03/10 - -
2827973 헌재 내에서 빨갱이 4마리 때문에 만장일치로 안 나올것임 ♥냥덩♥갤로그로 이동합니다. 03.10 50 2
2827972 와 씨발 형들 제가 방금전에 모듈을 만들었어요 [8] ㅇㅇ(211.235) 03.10 57 1
2827971 나님은 인공지능 좋아해,,, 나트륨찡갤로그로 이동합니다. 03.10 29 0
2827970 [애니 뉴스] 신입 취준생 평가해줌- [2] 프갤러(121.172) 03.10 57 0
2827969 AI 노무어렵당 [1] 나트륨찡갤로그로 이동합니다. 03.10 42 0
2827968 냉정하게 신입 취준생 스펙 평가 좀 프갤러(14.54) 03.10 35 0
2827967 AI 노무 어려운데,,, 나트륨찡갤로그로 이동합니다. 03.10 31 0
2827966 지금 회사 조퇴하고 병원 왔는데 [5] 딱님갤로그로 이동합니다. 03.10 51 0
2827965 나 AI 중독된 듯 [1] 나트륨찡갤로그로 이동합니다. 03.10 35 0
2827964 qt 도입하면 몇몇 문제점 해결되겠군 *루비*갤로그로 이동합니다. 03.10 27 0
2827963 나님은 고능아 센세 ㅋ 나트륨찡갤로그로 이동합니다. 03.10 28 0
2827962 전공자인데 국비 그냥 가지마? [11] 프갤러(223.38) 03.10 253 0
2827961 고능아 나트리엄 ㅋ 나트륨찡갤로그로 이동합니다. 03.10 31 0
2827960 qt 로 교체하면 *루비*갤로그로 이동합니다. 03.10 21 0
2827959 아.. 빨리 하고 싶다.. [5] *루비*갤로그로 이동합니다. 03.10 37 0
2827958 나는 고능아얌,,,, 나트륨찡갤로그로 이동합니다. 03.10 26 0
2827957 일반적으로 개발은 지능보다는 주의집중력이 중요함 [4] 딱님갤로그로 이동합니다. 03.10 58 0
2827956 코딩은 예체능처럼까지만큼의 재능의 영역아니지? [4] 빠다*케이크갤로그로 이동합니다. 03.10 61 0
2827955 리마2급 합격 [4] 아스카영원히사랑해갤로그로 이동합니다. 03.10 69 0
2827953 ㅋㅋ 어렵지만 재밌군...그치만 아직 부족해 나트륨찡갤로그로 이동합니다. 03.10 37 0
2827952 나는 어딜 가나 적응형이 맞는 듯 ㅋ [3] 나트륨찡갤로그로 이동합니다. 03.10 32 0
2827951 ㅋㅋ 새로운 AI 재밌농 이거 ㅋㅋ [1] 나트륨찡갤로그로 이동합니다. 03.10 40 0
2827950 두개 건졌네....ㅎ [2] 나트륨찡갤로그로 이동합니다. 03.10 44 0
2827949 하...망해버렷농 ㅋㅋ 나트륨찡갤로그로 이동합니다. 03.10 31 0
2827948 이게 머농 이게... 나트륨찡갤로그로 이동합니다. 03.10 28 0
2827947 근데 이거 두개 괜찮은데....? 나트륨찡갤로그로 이동합니다. 03.10 40 0
2827946 프갤러들아 잘 있거라,,, [1] 나트륨찡갤로그로 이동합니다. 03.10 46 0
2827945 나님 달에 1주 일하고 5백 버는법 [2] ♥냥덩♥갤로그로 이동합니다. 03.10 46 0
2827944 나는 디시를 접고 떠난다,,, 나트륨찡갤로그로 이동합니다. 03.10 37 0
2827943 [애니 뉴스] 프로젝트 KV의 최신 뉴스를 확인해보세요?! 프갤러(121.172) 03.10 40 0
2827942 머농 이게....ㅜㅜ 나트륨찡갤로그로 이동합니다. 03.10 32 0
2827941 하....나 디시 AI접어야겠농... 나트륨찡갤로그로 이동합니다. 03.10 36 0
2827940 [애니 뉴스] 프로젝트 KV! 최신 글! 프갤러(121.172) 03.10 37 0
2827939 어이가 없농...ㅋㅋ 나트륨찡갤로그로 이동합니다. 03.10 35 0
2827938 디시 AI 바뀌어버리면 나는 어떡해... 나트륨찡갤로그로 이동합니다. 03.10 37 0
2827937 바뀌었대서 테스트 발명도둑잡기갤로그로 이동합니다. 03.10 32 0
2827936 핫하 나 이제 디시 AI망해버렷노...ㅋㅋ 나트륨찡갤로그로 이동합니다. 03.10 37 0
2827933 Qt를 C로 할 수 있는 바인딩 dotherside 발명도둑잡기갤로그로 이동합니다. 03.10 28 0
2827931 나는 이제 디시 AI 망해버린 것이다 나트륨찡갤로그로 이동합니다. 03.10 34 0
2827930 머야 AI 바꼈네.. 나트륨찡갤로그로 이동합니다. 03.10 40 0
2827929 국비면접봤는데 나보고 왜 연대나오고 이거들으러왔냐는데 [6] 프갤러(223.38) 03.10 118 0
2827928 화교분탕들의 아학관련 과도한 공격에 맞대응 ㅇㅇ(175.223) 03.10 38 0
2827927 그렇다 나라도 개발도 망해버린것이다. 프갤러(211.234) 03.10 35 0
2827926 si도 요즘 취업힘들다던데 [3] ㅇㅇ갤로그로 이동합니다. 03.10 102 0
2827925 삼성 코테 프갤러(210.107) 03.10 177 0
2827924 고졸 30살인데 일자리 있으면 무조건 ㄱ임?? [16] 프갤러(125.138) 03.10 101 0
2827923 여자얘기만들어도 고통스럽고 힘들다 [2] 프갤러(175.223) 03.10 37 0
2827922 사사로운 디테일 하나 놓치지 않아야 개발귀(鬼) [3] 딱님갤로그로 이동합니다. 03.10 44 0
2827921 아 보1지 빨고 싶다 [3] 아스카영원히사랑해갤로그로 이동합니다. 03.10 86 0
2827920 ㅇㅇ 프갤러(211.234) 03.10 32 0
뉴스 영화인들, 박스오피스 조작 의혹 벗었다…“영진위·경찰, 진심 어린 사과해야” 디시트렌드 03.12
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2