Search Results for 'assert'

1 POSTS

  1. 2009/08/01 assert() 작성

assert() 작성

2009/08/01 23:09

C언어에는 assert.h 에 정의된, assert()가 있다. 어제, 안드로이드 NDK 1.5를 이용하던 중에, NDK에서 사용된 assert()의 결과가 logcat에 나오질 않아서, 표준출력이 아닌 안드로이드 로그에 내용을 뿌리는 ASSERT()를 새로 만들었다. # 연산자를 이용했다.

// Header
#ifndef NO_ASSERT
	#define ASSERT(e)	((void)0)
#else
	#define ASSERT(e)	((e)?(void)0:_my_assert(#e, __FILE__, __LINE__))
#endif//NO_ASSERT

// Implementation
#include "android/log.h"
void _my_assert(const char* str_exp, const char* file, int line) {
	__android_log_print(ANDROID_LOG_ERROR, "ASSERT FAILED!", "(%s:%d): `%s`", file, line, str_exp);
}

__android_log_print를 실행한 후에, 프로세스를 종료하는 것이 맞겠지만, 아직, NDK쪽에서 프로세스를 종료하는 방법을 알아내질 못했다. libc의 exit()는 에러가 발생한다. 만약, 방법이 없다면, JNI를 이용해서 java.lang.System.exit()를 호출하는 수 밖에 없을지도.

-- 이상한 나라의 종텐.