define에 대해서.

moonzoo의 이미지

#define ENTRY(item) (item, #item)

이런식의 define문을 본적이 있는데요.

뒤 부분의 (item,#item)을 어떻게 해석해야 하는건가요?

익명 사용자의 이미지

ENTRY(abcde);

->

(abcde, "abcde");

#는 양 옆에 따옴표를 붙여주는 역할을 합니다. 즉 문자열 상수로 만들어 주죠.

익명 사용자의 이미지

이건 무슨 용도로 사용하나요?

voider의 이미지

#define DBG_VAL(item) printf(#item " = %d\n", item)

DBG_VAL(count);

머 이런 용도로 사용했었던것 같네요
그런데 실제로 사용한일은 별로 없었던듯...

-- 아쉬운 하루 되세요 --

cbycby의 이미지

Anonymous wrote:
이건 무슨 용도로 사용하나요?

문자열을 결합해서 새로운 함수명등을 작명해 낼 수 있습니다.

#define PROPERTY_RONLY(type, name, val) \
type Get##name() { return val; }

이렇게 하면
PROPERTY_RONLY(int, No, m_no);
이렇게 하면

int GetNo() { return m_no; }
이렇게 되죠...
저는 이렇게 많이 씁니다.

http://www.korone.net QT 커뮤니티 사이트

ixevexi의 이미지

## 랑 #랑은 용도가 다릅니다 ^^

C++, 그리고 C++....
죽어도 C++

girneter의 이미지

#item 이 문자열로 확장되는건 알겠는데
실제로 이렇게 define 하면
ENTRY(item) 을 어떤 경우에 쓸 수 있죠?

#define ENTRY(item) (item, #item)

item 과 #item 이 컴마를 사이에 두고
괄호로 묶여서는 쓸수 있는곳이
떠오르지가 않네요

개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?

doldori의 이미지

girneter wrote:
#item 이 문자열로 확장되는건 알겠는데
실제로 이렇게 define 하면
ENTRY(item) 을 어떤 경우에 쓸 수 있죠?

#define ENTRY(item) (item, #item)

item 과 #item 이 컴마를 사이에 두고
괄호로 묶여서는 쓸수 있는곳이
떠오르지가 않네요


여기 사용예가 있군요. ^^;
http://bbs.kldp.org/viewtopic.php?p=235336&highlight=#235336