ASSERT(x)
매크로가 있고 해제 구성에서 주장하는 경우 return
을 호출하려고합니다. 이렇게하려면이 ASSERT
을 사용하는 함수의 반환 형식을 알아야합니다. 그것을 얻는 방법 (나는 C++03
, LLVM GCC 4.2
컴파일러를 다룬다)? 매크로에서 함수의 반환 유형 얻기 (C++)
#define ASSERT(x) \
if(!(x)) {
LOG ("ASSERT in %s: %d", __FILE__, __LINE__); \
return /*return_type()*/; \
}
PS : 나는 return 0;
시도 - 컴파일러는 무효 기능에 오류가 표시됩니다 (그리고 나는 복잡한 반환 유형을 시도하지 않은) 경우 return;
- void 이외의 기능에 대한 오류 . (업데이트 ...)
내가 werewindle 에 답변 해 드리겠습니다, 니 알라 토텝 및 jdv 얀 드 VAAN 여기. 디버그 구성에는 표준 assert
을 사용합니다. 그러나 베타 테스트 후 나는 아직도 최종 고객의 충돌 보고서를 얻고, 대부분의 경우 내 충돌 기능을 변경해야
ASSERT (_some_condition_);
if (!_some_condition_) // add this return
return _default_value_;
내 프로그램은 나중에 아마 충돌이 발생할 수 있음을 이해하고 (그렇지 않으면 확실히에서 충돌합니다 현재 기능). 또한 개발은 iPhone 용이므로 앱을 종료 할 수 없습니다 (앱이 프로그래밍 방식으로 종료되지 않을 수도 있음). 그래서 가장 쉬운 방법은 단정이 실패했을 때 "자동 복귀"하는 것입니다.
, 그들은 당신이 상관없이 프로그램이 무슨 버그 실행되지 계속 단지 것을 의미하지 않는다. ** 앱을 제출하기 전에 버그가 없어야 함을 의미합니다 **! –
iPhone - C++이 아닌 Objective-C가 아닙니까? – codeling
예외 사용에 대해 생각해 보셨습니까? 매우 높은 수준의 try-catch 블록을 사용하여 예외 객체에 통합 할 수있는 메시지를 기록 할 수있는 것처럼 보입니다 ('__FILE__' 및'__LINE__'에 의해 주어진 위치와 함께). 당신은 반환 가치에 전혀 관심이없는 것 같은가요? – Andre