본문 바로가기

Programing/c/c++

MECRO 사용. 정의된 MECRO메크로 .....define ##의 사용

http://dhna.tistory.com/44 출처



#define PATHNAME "/Movie/Action"

#define MOVIEDATA           PATHNAME##"/Data"



#, ##, #@

## 연산자
  ## 연산자를 사용해서 토큰을 합성해서 만들어 낼 수 있다. ##은 합치기 연산자 이다.
  ex) #define MACRO_APPEND(str1, str2) printf("%s\n", str1##str2)

# 연산자
  # 연산자는 전달된 인자를 문자열로 변환시킨다.
  ex) #define MACRO_STRING(str) printf("%s\n", #str);

#@ 연산자
  #@ 연산자는 전달된 인자를 문자로 변환시킨다.



미리 정의된 매크로

__STDC__ : 컴파일러가 ANSI C 표준을 따를 경우 1로 정의되며 그렇지 않을 경우
                 정의되지 않는다. C++로 컴파일할 때는 이 매크로가 없다.
__FILE__ : 현재 소스 파일의 완전 경로이다.
__LINE__ : 파일명
__DATE__  : 컴파일될 때의 날짜를 나타내는 문자열이다.
__TIME__ : 현재 소스가 최후로 수정된 날짜와 시간을 나타낸다. 
__TIMESTAMP__ : 현재 소스가 최후 컴파일된 시간을 나타내는 문자열이다.
__func__ : 함수명 (컴파일러가 처리, c99 표준) 
__FUNCTION__  : 함수명 (컴파일러가 처리, 컴파일러마다 다름)



Visual C++에서 미리 정의된 매크로

_DEBUG : 디버그 모드로 컴파일중일 때만 정의된다.
__cplusplus : C++ 모드로 컴파일중일 때만 정의된다.
_DLL : DLL 프로젝트일 때만 정의된다.
_MSC_VER : 비주얼 C++의 컴파일러 버전을 나타낸다. 6.0은 1200으로 정의되며 7.0(닷넷)은 1300으로 정의된다.
_MFC_VER : MFC 라이브러리의 버전값
_ATL_VER : ATL의 버전값
_WIN32 : Win32 환경일 때 정의된다.
_WIN64 : Win64 환경일 때 정의된다.
__COUNTER__ : 참조될 때마다 1씩 증가하는 정수값이다. 유일한 이름을 만들고자 할 때 이 매크로를 사용한다.
                        7.0 이상에서만 제공된다.
_M_ALPHA, _M_IX86, _M_IA64, _M_MPPC : CPU의 종류이다. 플랫폼에 따라 약간씩 코드가 달려져야 할 때 이 매크로를 참조한다. 


http://dhna.tistory.com/44 출처

'Programing > c/c++' 카테고리의 다른 글

람다 샘플 코드2  (0) 2011.10.28
람다 샘플 코드  (0) 2011.10.28
char [0] , char [1] 의미? (출처 http://minjang.egloos.com/2254472)  (0) 2011.01.05
비쥬얼 스튜디오 스타일 scheme  (0) 2010.12.08