2010-08-16 3 views
1

누군가 텍스트 파일을 조작하기 위해 일반 전 처리기를 사용하는지 궁금합니다. Java는 전처리가없는,하지만 난 조건 코드 컴파일을하고 싶습니다 등일반 전처리 기 : 모든 종류의 파일에 사용하는 방법?

이제 더 그런 생각을 가지고, 나뿐만 아니라 대한 일반적인 프리 프로세서를 사용할 수 있습니다로

는 생각은 와서 빈번한 편집이 필요한 모든 종류의 파일이 있지만 모든 편집 작업은 비슷한 방식입니다.

지금, 거기에 좋은 똑똑한 '내가이 C 프리 프로세서를 사용할 때 사용하는 좋아하고, GPP가있는 것 M4 그러나, 나는 2007 년

개발되고 멈춘 하나' 가능하다면 C- 전처리 기와 동일한 방법으로 지시문을 취해야합니다. #define SOMETHING.

m4는 sigils 또는 무언가를 사용하지 않으므로 다른 코드와 충돌 할 수 있습니다. m4를 사용하는 경우 모든 지시어 앞에 sigil 또는 다른 접두어를 붙이는 방법에 대한 조언이 필요합니다.

답변

1

대부분의 C/C++ 컴파일러를 사용하면 전처리기만 실행하고 출력을 저장하고 일반 입력에 사용할 수 있습니다. (Visual C++의 경우 옵션이/P 임)

그러나 전처리 기는 해결할 수있는 많은 문제를 일으킨다는 것을 기억하십시오. C++과 Java의 설계자는 전처리기를 사용할 필요가 없도록 노력했습니다. 예를 들어, 자바,이 같은 코드 :

if (true) 
    CallThis(); 
else 
    DoNotCallThis(); 

그냥 CallThis() 전화 코드를 생성하고 조건 또는 다른 지점에 대한 코드를 생성하지. (이것은 구현 문제의 품질이 아닙니다. Java 언어 정의의 요구 사항입니다.)

+0

m4로 필드 테스트를 해보겠습니다. m4가 가장 많이 사용되는 언어이기 때문에이 테스트에 만족해합니다. GPP를 여기저기서 시험해 볼 것이지만, 나는 이것이 사실을 고수 할 것이라고 확신하지는 않는다. – polemon

+0

당신이 옳았습니다, 전 처리기 지시문은 코드를 읽을 수 없게 만들었지 만, 제가 할 수있는 일이별로 없다고 생각합니다. 쉘 스크립트와 메이크 파일과 함께 사용하고 있습니다. 어쨌든, m4와 cpp를 사용하면 꽤 번거롭지 만 ... – polemon

0

'sigil'의 경우 m4의 명령 행 옵션 -P을 사용하여 접두어 m4_을 모든 내장 m4 매크로에 추가하십시오. 그러면 m4_define, m4_divert 등이 있습니다.