Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[3079] Re:책의 예제하고 똑같이 만들었는데, 에러가 뜨네요..
강재호.만해 [greenuri] 1336 읽음    2003-10-31 16:55
로터스 님이 쓰신 글 :
: 책은 teach yourself C++ 이구요, 17일째의 매크로를 공부하고 있는데, 아래의
: 코드가 실행이 안됩니다. 예제와 똑같이 작성했는데 안되네요.. 어디가 잘못되었는지
: 알려주시면 감사요~ ^^
:
: 컴파일러 : visual c++ 6.0
:
:
: ------------------------------
:
: #define DEBUG
: #include <iostream.h>
:
: #ifndef DEBUG
:   #define ASSERT(x)
: #else
:   #define ASSERT(x) \
:             if(! (x)) \
:             { \
:                  cout << "ERROR!! Assert " << #x << " failed\n"; \
:                  cout << " on line " << _LINE_ << "\n"; \
:                  cout << " in line " << _FILE_ << "\n"; \
:             }
:
: #endif
:
: int main()
: {
:     int x = 5;
:     cout << "First assert: \n";
:        ASSERT(x==5);
:     cout << "\nSecond assert: \n";
:     ASSERT(x != 5);
:     cout << "\nDone.\n";
:     return 0;
: }
: ------------------------------------------
안녕하세요 만해입다.

방금 컴파일 시켜서 결과를 확인 해 봤는데요 _LINE_ 하고 _FILE_부분에서 에러가 나네요

정의가 안된 변수이거나 컴파일러에 따라 틀리게 지원이 되는 매크로 변수인것 같네요

cout << "On Line" << _LINE_ << "\n"; \
cout << "in File" << _FILE_ << "\n"; \

이 두라인을 주석 처리하고 해보세요

아니면 _LINE_하고 _FILE_을 #define으로 정의해 주셔도 됩니다.

제가 약간 손을 본 소스를 보여 드릴께요

C++ builder X에서 컴파일해서 문제 없이 되는 소스 입니다.

#ifdef __BORLANDC__
  #pragma argsused
#endif

#define DEBUG
#define _FILE_ "test.cpp" /* <-- _FILE_에 "test.cpp" 라는 값을 할당 시켯고요*/
#include <iostream.h>

#ifndef DEBUG
  #define ASSERT(x,y)   /*<- x는 조건값 , y 는 현재 라인 */
#else
  #define ASSERT(x,y) \
            if(! (x)) \
            { \
                 cout << "ERROR!! Assert " << #x << " failed\n"; \
                 cout << " on line " << y << "\n"; \
                 cout << " in line " << _FILE_ << "\n"; \
            }
#endif

int main()
{
    int x = 5;
    cout << "First assert: \n";
       ASSERT(x==5,25); // <- 조건값과 현 라인을 넣어서 Assert를 호출.
    cout << "\nSecond assert: \n";
    ASSERT(x != 5,27);
    cout << "\nDone.\n";
    return 0;
}


결과 :
First assert:



Second assert:

ERROR!! Assert x != 5 failed

on line 27

in line test.cpp



Done.


그럼 즐프 하세요

+ -

관련 글 리스트
3077 책의 예제하고 똑같이 만들었는데, 에러가 뜨네요.. 로터스 1275 2003/10/31
3079     Re:책의 예제하고 똑같이 만들었는데, 에러가 뜨네요.. 강재호.만해 1336 2003/10/31
4297         Re:Re:책의 예제하고 똑같이 만들었는데, 에러가 뜨네요.. 로터스 1383 2003/11/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.