2011-08-11 18 views
5

私はCではあまり強くありませんが、今はNDKで作業しています。変数のアドレスを16進数で記録するのに役立つ必要があります。私は__android_log_printを使って一般的なログメッセージを出力しましたが、変数のアドレスをchar配列に変換するようにCに指示するにはどうすればよいですか?NDKの変数のアドレスを出力する/ログする方法

答えて

7

私はアンドロイドNDKで一度も働いたことはありませんが、__android_log_printはprintf形式の文字で動作すると仮定しています。その場合は、%pを使用することができます。

変数がint a = 10;であるとします。

printf("%p\n", &a); //This will print in hexadecimal 

EDIT:そのアドレスを印刷するには

受け入れ答え:

__android_log_print(SOME_PRIO, "sometag", "%p", &a); 
+0

うんのように見えるが、実際にアドレスを文字列に変換してからこの関数に渡す必要があります。 – Phonon

+0

私は文書を素早く見て、 '' __android_log_print(SOME_PRIO、 "sometag"、 "%p"、&a); ''、申し訳ありません。 – Fred

+0

) ) – Phonon

2

私は、Android NDK何度と協力し、私が使用ネイティブlogcat前に試してみました。

__android_log_print(6, "deneme", "text"); -> this is error message 
typedef enum android_LogPriority { 
ANDROID_LOG_UNKNOWN = 0, 
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ 
ANDROID_LOG_VERBOSE, 
ANDROID_LOG_DEBUG, 
ANDROID_LOG_INFO, 
ANDROID_LOG_WARN, 
ANDROID_LOG_ERROR, 
ANDROID_LOG_FATAL, 
ANDROID_LOG_SILENT,  /* only for SetMinPriority(); must be last */ 
} android_LogPriority; 

とCソースファイルのヘッダが含まよりもメイクよりも

#include <jni.h> 
#include <android/log.h> 

は__android_log_print`はprintf`はない `のような書式を持っているので、私はありません`

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := deneme-jni 
LOCAL_SRC_FILES := deneme.c 
LOCAL_LDLIBS := -llog 

include $(BUILD_SHARED_LIBRARY) 
関連する問題