Q&A

  • {$ifdef ???}..{$else}..{$end} 참조에 대해서
도와주세요.

Object pascal에서 compiler 지시자를 사용하다가 다음과 같은 이상한 현상이 있어서요.



==================

{$define TEST}

{$ifdef TEST}

.....

{$else}

....

{$end}

==================



source file명이 Sample.pas라고 할때 interface section에서 다음과 같이 하면 정상적으로 {$ifdef TEST}와 {$else}사이의 Routine을 처리합니다.

그런데 {$ifdef TEST} .....{$else}... {$end} 부분을 다른 file로 sam_header.pas로 하여 따로 정의하여 사용하면 항상 {$else}..{$end}부분을 처리합니다.

어떻게 해야만 {$ifdef TEST}..{$else}부분을 처리할 수 있나요?

꼭 sam_header.pas로 분리하여야 하는데....

가르쳐 주세요....

3  COMMENTS
  • Profile
    최용일 2000.03.27 19:15
    ==> {$define TEST} 부분도 추가해하시면 됩니다.





    유희정 wrote:

    > 도와주세요.

    > Object pascal에서 compiler 지시자를 사용하다가 다음과 같은 이상한 현상이 있어서요.

    >

    > ==================

    > {$define TEST}

    > {$ifdef TEST}

    > .....

    > {$else}

    > ....

    > {$end}

    > ==================

    >

    > source file명이 Sample.pas라고 할때 interface section에서 다음과 같이 하면 정상적으로 {$ifdef TEST}와 {$else}사이의 Routine을 처리합니다.

    > 그런데 {$ifdef TEST} .....{$else}... {$end} 부분을 다른 file로 sam_header.pas로 하여 따로 정의하여 사용하면 항상 {$else}..{$end}부분을 처리합니다.

    > 어떻게 해야만 {$ifdef TEST}..{$else}부분을 처리할 수 있나요?

    > 꼭 sam_header.pas로 분리하여야 하는데....

    > 가르쳐 주세요....

  • Profile
    유희정 2000.03.27 19:35
    최용일님의 경우는 이미 test해 보았습니다.

    {$Define TEST}를 sam_header.pas부분에 넣으면 항상 {ifdef TEST}..{$else}부분만을 처리합니다. 다른 source file에서도 말입니다.

    여러개의 source file에서 어떤 file은 {$ifdef}..{$else}부분으로 처리하려고 하는 것이고 또 어떤 file에서는 {$else}..{$end}부분을 처리하고자 하기 위한 것입니다.

    다시 한번 부탁드립니다.

    최용일 wrote:

    > ==> {$define TEST} 부분도 추가해하시면 됩니다.

    >

    >

    > 유희정 wrote:

    > > 도와주세요.

    > > Object pascal에서 compiler 지시자를 사용하다가 다음과 같은 이상한 현상이 있어서요.

    > >

    > > ==================

    > > {$define TEST}

    > > {$ifdef TEST}

    > > .....

    > > {$else}

    > > ....

    > > {$end}

    > > ==================

    > >

    > > source file명이 Sample.pas라고 할때 interface section에서 다음과 같이 하면 정상적으로 {$ifdef TEST}와 {$else}사이의 Routine을 처리합니다.

    > > 그런데 {$ifdef TEST} .....{$else}... {$end} 부분을 다른 file로 sam_header.pas로 하여 따로 정의하여 사용하면 항상 {$else}..{$end}부분을 처리합니다.

    > > 어떻게 해야만 {$ifdef TEST}..{$else}부분을 처리할 수 있나요?

    > > 꼭 sam_header.pas로 분리하여야 하는데....

    > > 가르쳐 주세요....



  • Profile
    최용일 2000.03.27 19:46
    심볼을 제거할땐 $undef컴파일러 지시자를 쓰시면 됩니다.

    이미 지정된 심볼을 다시 없애버리는 기능입니다.

    즉 {$UNDEF TEST}하시면 ELSE이하부분이 실행됩니다.



    유희정 wrote:

    > 최용일님의 경우는 이미 test해 보았습니다.

    > {$Define TEST}를 sam_header.pas부분에 넣으면 항상 {ifdef TEST}..{$else}부분만을 처리합니다. 다른 source file에서도 말입니다.

    > 여러개의 source file에서 어떤 file은 {$ifdef}..{$else}부분으로 처리하려고 하는 것이고 또 어떤 file에서는 {$else}..{$end}부분을 처리하고자 하기 위한 것입니다.

    > 다시 한번 부탁드립니다.

    > 최용일 wrote:

    > > ==> {$define TEST} 부분도 추가해하시면 됩니다.

    > >

    > >

    > > 유희정 wrote:

    > > > 도와주세요.

    > > > Object pascal에서 compiler 지시자를 사용하다가 다음과 같은 이상한 현상이 있어서요.

    > > >

    > > > ==================

    > > > {$define TEST}

    > > > {$ifdef TEST}

    > > > .....

    > > > {$else}

    > > > ....

    > > > {$end}

    > > > ==================

    > > >

    > > > source file명이 Sample.pas라고 할때 interface section에서 다음과 같이 하면 정상적으로 {$ifdef TEST}와 {$else}사이의 Routine을 처리합니다.

    > > > 그런데 {$ifdef TEST} .....{$else}... {$end} 부분을 다른 file로 sam_header.pas로 하여 따로 정의하여 사용하면 항상 {$else}..{$end}부분을 처리합니다.

    > > > 어떻게 해야만 {$ifdef TEST}..{$else}부분을 처리할 수 있나요?

    > > > 꼭 sam_header.pas로 분리하여야 하는데....

    > > > 가르쳐 주세요....

    >