나는 이런 식으로 뭔가 보이는 매크로 VERIFY 추가 일부 Qt는 코드를 사용하고 매크로를 변환 :인라인 함수
#define VERIFY(cond) \
{ \
bool ok = cond; \
Q_ASSERT(ok); \
}
코드는 다음 조건 특정되는 동안 사용할 수 실제로 평가, 예를 : 매크로를 싫어
Q_ASSERT(callSomeFunction()); // callSomeFunction not evaluated in release builds!
VERIFY(callSomeFunction()); // callSomeFunction is always evaluated
, 내가 대신 인라인 함수로이 설정하고 싶은 :
inline VERIFY(bool condition)
{
Q_ASSERT(condition);
}
,
그러나 릴리스 빌드에서 컴파일러가이 함수에 대한 모든 호출을 최적화 할 것이라고 염려합니다. (Q_ASSERT
은 실제로 아무 것도하지 않습니다.) 불필요하게 걱정하거나 최적화 플래그/컴파일러/등에 따라 가능성이 있습니다. .? 그러나, 다시, 컴파일러는 호출을 무시할 수있을만큼 영리 할 수있다
inline VERIFY(bool condition)
{
condition;
Q_ASSERT(condition);
}
: 나는 그것을 바꿀 수 같아요.
디버그 빌드와 릴리스 빌드 모두에서이 인라인 대체 안전합니까?
나는 위험을 감수하지 않기로 결정했습니다. 감사! – Rob