2012-10-24 2 views
2

저는 GCC 플러그인 API 세계를 탐험하기 시작했습니다. 다음 예제에서 GCC를 확장하려고합니다.GCC 플러그인을 사용하여 새 키워드를 소개합니다.

class Foo { ... }; 

Foo* f = __construct Foo(); // __construct is meant to be a new keyword 

적으로는, 내가 단순히 new (foo_class_info) 같은 뭔가 __construct를 대체하는 플러그인을하고 싶습니다, 그래서 당신은 (foo_class_infoPLUGIN_FINISH_TYPE 콜백을 통해 제공하고있다

Foo* f = new (foo_class_info) Foo(); 

하게 될 겁니다 즉 __construct 전 처리기 통과시 교체 할 수 없음).

이것을 달성하는 가장 쉬운 방법은 무엇입니까? 나는 심지어 일부 사용자 - 땅 템플릿 코드를 플러그인과 결합하는 것을 신경 쓰지 않는다.

새로운 길을 추가하는 것이 좋을까요? 그렇다면 실제로 포인터를 사용할 수 있습니다.

+0

이 키워드의 요지는 무엇입니까? 그것을 필요로하는 추론? – Pubby

+0

@Pubby 그래서 Foo에 대한 PLUGIN_FINISH_TYPE 콜백을 통해 과부하 된 새로운 정보 만 전달할 수있는 정보를 전달할 수 있습니다. –

+0

나의 초기의 본능은 당신이 잠재적 인 구현을 복잡하게 만들었다는 것이다.하지만이 메카니즘으로 해결하려고하는 것이 진짜라고 말할 수는 없다. 보다 자세한 내용을 통해 특정 컴파일러와 연결되지 않는 언어 솔루션을 제공 할 수 있습니다. –

답변

0

플러그인은 근본적으로 구문을 변경할 수 없습니다.

가장 많이 할 수있는 것은 새로운 pragma, attribute 또는 builtin을 추가 한 다음 나중 단계에서이를 수행하는 것입니다.

관련 문제