2010-08-16 11 views
0

로거 파일을 쓰고 있습니다. 매크로를 사용하는 것을 선호합니다 __FUNCTION__ 있습니다. 내가 좋아하는 길을 좋아하지 않는다 :매크로가 함수 인수의 기본 매개 변수로 사용됩니다.

void write(const string &message, string functionName = __FUNCTION__) 
{ 
    // ... 
} 

그렇지 않으면 그 물건을 할 수있는 방법이 (내가 전달하는 의미 손에 의해이 없습니다 : 어쩌면

Logger.write("Message", __FUNCTION__); 

를, 그것은 무언가 같이 할 가능 함수 이름)?

답변

4

당신은 매크로에서 모든 포장하여 그런 일을 할 수있는 :

#define log(msg) Logger.write(msg, __FUNCTION__) 

단점이 매크로를 사용할 때 범위에 Logger이 있어야한다는 것입니다.

2

매크로는 텍스트 대체만으로 작동합니다. 전 처리기는 매크로 정의를 이름 대신 사용합니다. 당신이 제안한 것과 같은 "지적"매크로를 가질 수는 없습니다.

표준 C++에서 원하는 것을 지원하지 않습니다.

+0

오케이. 답변 해주셔서 감사합니다. 이것을 기억할 것입니다. – Ockonal

관련 문제