2009-12-12 3 views
2

Delphi 7 용 매크로 전 처리기가 있습니까?Delphi 7 매크로 전 처리기 지원

아마도 제 3 자 또는 다른 언어 전처리 기 (예 : c 전처리 기)를 사용할 가능성이 있습니다.

만약 하나가 있다면, 어떻게 델파이 7을 설정 하는가?

나는 (속도를 위해) 함수 인라이닝을하려하고있다. 매크로 전처리 기가 델파이의 유일한 쉬운 옵션 인 것 같습니다.

덕분에, 에곤

답변

4

컴파일하기 전에 코드에 m4 또는 심지어 shudder cpp와 같은 외부 매크로 프로세서를 실행할 수 있습니다. 그러나 나는 이것을 권장하지 않습니다. 제 경험상 인라인 (여러분이하고 싶은 것입니다)의 이점은 아주 작으며, 코드 크기가 커지기 때문에 속도가 느려질 수 있습니다.

+0

비교적 가치가 있지만 상대적으로 낮은 수준의 유형을 사용하는 짧은 잎 메서드에만 해당합니다. (IOW는 자동화되지 않았습니다). 그것은 포인터 기반 반복자 (iterators)와 같은 것에 매우 좋습니다. 모든 절차가 호출되자 마자 속도가 올라갔습니다 –

+0

마침내 m4가 사용되었습니다. 그것은 가장 분리 된 구문을 갖는 것처럼 보였다. 속도는 작은 기능의 경우 10 배가 될 수 있습니다. 예를 들어, PointInRect와 같은 간단한 함수. – Egon

0

는 델파이 7에서 제 3 자 매크로 들어하지 않은,하지만 그 옵션의 경우 버전 2007 이상 자동 인라인을 가지고있다.

+0

D2005는 이미 인라인을 지원합니다. –

1

JEDI Code Library의 일부인 [JEDI Pascal Preprocessor] (JEDI Pascal PreProcessor)를 사용할 수 있습니다.

SourceForge project page에서 현재 JCL 버전을 가져올 수 있으며 JPP 코스 코드 here을 탐색 할 수 있습니다.

2

는 여기에 내가 m4을 사용하는 방법은 다음과 같습니다

// uses lookup for counting bits 
function PopCount(const Number: Cardinal): Byte; 
begin 
    Result := WordBitCount[Number and $FFFF] + WordBitCount[Number shr 16]; 
end; 
{ M4 macro 
define(PopCount, (WordBitCount[[email protected] and $FFFF] + WordBitCount[[email protected] shr 16])) 
} 

그것은 여전히 ​​쉽게 컴파일 가능한, 그러나 m4로 가속화 될 수있다.

+0

나는 당신의 솔루션이 pre-processor를 먼저 실행하지 않고 컴파일 될 수 있다고 생각한다 :) – Sebastian