피드로 돌아가기
I Built a GCC Plugin for Struct Inheritance
Dev.toDev.to
Backend

GCC Plugin으로 구현하는 C 언어 구조체 상속 시스템

I Built a GCC Plugin for Struct Inheritance

drflamemontgomery2026년 4월 9일10advanced

Context

C 언어는 견고하고 단순한 특성을 가짐. 최신 언어 대비 제공 기능이 부족한 구조적 한계 존재. 객체지향 프로그래밍(OOP) 구현을 위해 C++ 전환 없이 언어 기능을 확장할 필요성 발생.

Technical Solution

  • GCC Plugin API를 활용하여 컴파일 타임에 언어 기능을 확장하는 구조 설계
  • plugin_init 함수 내에서 PLUGIN_ATTRIBUTES 콜백을 등록하여 사용자 정의 속성 처리 기반 마련
  • attribute_spec 구조체를 정의하여 [[gnu::embed_struct]]라는 커스텀 속성 식별자 생성
  • register_attribute 함수를 통해 GCC 컴파일러가 새로운 속성을 인식하도록 등록하는 프로세스 구축
  • 부모 구조체 필드와 자식 구조체 필드를 메모리 상에서 공유하도록 매핑하는 컴파일러 확장 로직 구현
  • Makefile 내 -fplugin 플래그를 사용하여 컴파일 과정에서 플러그인 동적 라이브러리를 로드하는 빌드 파이프라인 구성

Key Takeaway

컴파일러 플러그인을 통해 언어 자체의 문법적 제약을 극복하고 특정 도메인에 최적화된 언어 기능을 직접 주입하는 엔지니어링 접근 방식.


언어 표준 변경 없이 특정 개발 환경에 필요한 문법 설탕(Syntactic Sugar)이 필요할 때 GCC Plugin 도입을 검토할 것

원문 읽기
I Built a GCC Plugin for Struct Inheritance | Devpick