현재 Scott Meyers의 Effective C++라는 책을 읽었습니다. 함수와 비슷한 매크로에 대해 #define
이상의 함수를 inline
보다 선호해야한다고 말합니다.내 C++ 예외 매크로를 __LINE__ 및 __FILE__ 지원 인라인 함수로 바꿀 수 있습니까?
이제 예외 매크로를 바꾸기 위해 인라인 함수를 코딩하려고합니다. 이런 내 오랜 매크로 외모 :
inline void __EXCEPTION(const std::string aMessage)
{
std::ostringstream stream;
stream << "EXCEPTION: " << aMessage << ", file " <<__FILE__ << " line " << __LINE__;
throw ExceptionImpl(stream.str());
}
으로 아마 어떤 사람들은 이미 그들이 항상 참조하기 때문에 지금 __FILE__
및 __LINE__
매크로, 쓸모없는, 기대 :
#define __EXCEPTION(aMessage) \
{ \
std::ostringstream stream; \
stream << "EXCEPTION: " << aMessage << ", file " <<__FILE__ << " line " << __LINE__; \
throw ExceptionImpl(stream.str()); \
}
나의 새로운 인라인 기능이 있습니다 C++ - 인라인 함수 정의 파일.
이 동작을 피하는 방법이 있습니까? 아니면 이전 매크로를 사용해야합니까? 여기이 스레드를 읽고, 나는 아마 이미 잘 작동하는 나의 두 번째 예제의 방법이 없다고 생각한다 :
두 번째 매크로는 아니므로 소개가 정확하지 않습니다. 때로는 매크로가 * 일을 처리하는 방법입니다 (예 : this). – WhozCraig
@WhozCraig 힌트를 보내 주셔서 감사합니다. – John