C 전처리 기는 C에 연결되어 있지만 주요 언어와는 완전히 다른 구문을 사용합니다.
구문 상으로 중요한 공백 (행 끝이 명령문을 종료하고 매크로가 대체 목록의 시작을 판별 한 후 간격)
키워드 기반 대신 보강 블록의 블록
elif
대신else if
선언-반사-사용 대신 키워드 중심 정의,
=
값 정의 없음대체 문자열 구문의 힌트 (
#include <>
vs#include ""
)게으른 평가 (C의 명백한; 그러나 6.10.3.1 은 중요한 몇 가지 장소에서 매크로 확장의 특정 순서를 암시 하는 것으로 읽을 수 있습니다 )
실제로 C처럼 보이지 않습니다! 기술적으로 는 자체 언어이지만 항상 C의 거의 통합 부분으로 사용되었으며 구문 적으로 통합되지 않는 것은 매우 이상합니다.
Wikipedia는 역사에 대해 이야기하지 않습니다. 포틀랜드 패턴 리포지토리 (Portland Pattern Repository) 는이를 언급 하지만 C의 역사를 가진 다른 C가 아닌 다른 사람들에 의해 설계되었다는 사실을 넘어서서 자세히 설명하지는 않습니다. 더 오래 사용할 수 있습니다.
매크로 엔진으로, 그것은 분명히 매우 다른 설명 할 런타임 언어에서 의미가 일부 그것은 원래 것으로 의도 여부를 현대 눈도 불분명 (차이가 있지만 시각적 디자인 측면을 할 수 의 종류의 의 재미 자사의 대체 시스템을 사용하면 강력한 옵티 마이저 이전에 기능을 인라인하는 편리한 방법 일 수 있습니다. C와 같은 의미론이 실제로 시작점 이었다면 결국 C ++ 템플릿이 된 것에 더 가까운 것이 매크로에 대한 논리적 진화라고 생각되지만 구문에 대한 것보다 이것에 대한 구체적인 증거는 적습니다.
왜 이런 식으로 디자인되었는지 또는 제작자의 영향이 무엇인지에 대한 기록이 있습니까?