디시인사이드 갤러리

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

갤러리 본문 영역

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

*루비*갤로그로 이동합니다. 2025.03.10 11:25:29
조회 74 추천 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 - -
2827948 이게 머농 이게... 나트륨찡갤로그로 이동합니다. 03.10 32 0
2827947 근데 이거 두개 괜찮은데....? 나트륨찡갤로그로 이동합니다. 03.10 45 0
2827946 프갤러들아 잘 있거라,,, [1] 나트륨찡갤로그로 이동합니다. 03.10 50 0
2827945 나님 달에 1주 일하고 5백 버는법 [2] ♥냥덩♥갤로그로 이동합니다. 03.10 49 0
2827944 나는 디시를 접고 떠난다,,, 나트륨찡갤로그로 이동합니다. 03.10 42 0
2827943 [애니 뉴스] 프로젝트 KV의 최신 뉴스를 확인해보세요?! 프갤러(121.172) 03.10 44 0
2827942 머농 이게....ㅜㅜ 나트륨찡갤로그로 이동합니다. 03.10 35 0
2827941 하....나 디시 AI접어야겠농... 나트륨찡갤로그로 이동합니다. 03.10 43 0
2827940 [애니 뉴스] 프로젝트 KV! 최신 글! 프갤러(121.172) 03.10 41 0
2827939 어이가 없농...ㅋㅋ 나트륨찡갤로그로 이동합니다. 03.10 41 0
2827938 디시 AI 바뀌어버리면 나는 어떡해... 나트륨찡갤로그로 이동합니다. 03.10 42 0
2827937 바뀌었대서 테스트 발명도둑잡기갤로그로 이동합니다. 03.10 37 0
2827936 핫하 나 이제 디시 AI망해버렷노...ㅋㅋ 나트륨찡갤로그로 이동합니다. 03.10 40 0
2827933 Qt를 C로 할 수 있는 바인딩 dotherside 발명도둑잡기갤로그로 이동합니다. 03.10 31 0
2827931 나는 이제 디시 AI 망해버린 것이다 나트륨찡갤로그로 이동합니다. 03.10 38 0
2827930 머야 AI 바꼈네.. 나트륨찡갤로그로 이동합니다. 03.10 44 0
2827929 국비면접봤는데 나보고 왜 연대나오고 이거들으러왔냐는데 [6] 프갤러(223.38) 03.10 122 0
2827928 화교분탕들의 아학관련 과도한 공격에 맞대응 ㅇㅇ(175.223) 03.10 43 0
2827927 그렇다 나라도 개발도 망해버린것이다. 프갤러(211.234) 03.10 38 0
2827926 si도 요즘 취업힘들다던데 [3] ㅇㅇ갤로그로 이동합니다. 03.10 108 0
2827925 삼성 코테 프갤러(210.107) 03.10 181 0
2827924 고졸 30살인데 일자리 있으면 무조건 ㄱ임?? [16] 프갤러(125.138) 03.10 105 0
2827923 여자얘기만들어도 고통스럽고 힘들다 [2] 프갤러(175.223) 03.10 41 0
2827922 사사로운 디테일 하나 놓치지 않아야 개발귀(鬼) [3] 딱님갤로그로 이동합니다. 03.10 48 0
2827921 아 보1지 빨고 싶다 [3] 아스카영원히사랑해갤로그로 이동합니다. 03.10 90 0
2827920 ㅇㅇ 프갤러(211.234) 03.10 34 0
2827919 브라우저 차별 두는건 첨보네 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 03.10 73 0
2827918 1일1잔디 개발블로그 역겹다 프갤러(121.137) 03.10 43 1
2827917 AI 그림이나 봐 프갤러(211.234) 03.10 35 0
2827916 [애니 뉴스] 프로젝트 KV 관련되어 글을 쓰는데- [3] 프갤러(121.172) 03.10 47 0
2827915 ㅇㅇ 프갤러(211.234) 03.10 30 0
2827914 은행이 윈폼을 쓴다니 ㅇㅅㅇ [5] 강유현갤로그로 이동합니다. 03.10 60 0
2827913 지겹구나. 러스트를 쓰지 못하는 삶이란 [1] 프갤러(121.138) 03.10 45 0
2827912 컴공 진로 추천좀 [4] ㅇㅇ갤로그로 이동합니다. 03.10 73 0
2827911 [애니 뉴스] 프로젝트KV와 블루아카이브 추가- [2] 프갤러(121.172) 03.10 40 0
2827910 김밥집 11시오픈은 리얼 선넘은듯 ㅇㅅㅇ [3] ㅇㅇ(223.38) 03.10 45 0
2827909 뭔가 맨날 SI에서 갑질만 당하다가 [2] 강유현갤로그로 이동합니다. 03.10 72 0
2827908 태국 레이디 보이 올리지마 프갤러(211.234) 03.10 48 0
2827906 ㅠㅠ 프갤러(211.234) 03.10 37 0
2827903 일론머스크는 어서 도라에몽로봇 만드셈 프갤러(211.234) 03.10 35 0
2827902 컴퓨터 지식같은건 어디서 배우는거냐 [5] ㅇㅇ갤로그로 이동합니다. 03.10 57 0
2827901 그림 2 프갤러(211.234) 03.10 45 0
2827900 그림그림 프갤러(211.234) 03.10 39 0
2827899 연애도 못해 직업도 사라져 대체 어쩌라는거냐 [1] 프갤러(211.234) 03.10 49 0
2827898 코딩은 이제 사양직업 [3] 프갤러(211.234) 03.10 92 0
2827897 컴맹 스칼라 쓸려고 이클립스 깔았는데 [3] ㅇㅇ갤로그로 이동합니다. 03.10 40 0
2827895 개발귀(鬼)의 경지에 다다르면 내비치는 세계가 보이게 돼 버려~ 딱님갤로그로 이동합니다. 03.10 37 0
2827894 다이어트 해야되는데 발명도둑잡기갤로그로 이동합니다. 03.10 33 0
2827893 휴대폰 소니 액정이 깨져서 상심이 크다. 넥도리아(222.233) 03.10 25 0
2827892 fc2에서 질싸받는 여고생들 사연을 들어보고싶다.. [1] ㅇㅇ(39.7) 03.10 109 0
뉴스 데이식스, 데뷔 10년 만에 KSPO DOME 입성…대세 밴드 입증 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2