NDK

2011-08-11 17 views
5

'daki bir değişkenin nasıl yazdırılacağı/günlüğe kaydedileceği C'de çok güçlü değilim, ancak şu anda NDK ile çalışıyorum ve bir değişkenin adresini onaltılık olarak kaydetme konusunda yardıma ihtiyacım var. Genel günlük iletileri yazdırmak için __android_log_print kullanıyorum, ancak C'nin bir değişkenin adresini bir char dizisine dönüştürmesini nasıl söyleyebilirim?NDK

cevap

7

Android NDK ile hiç çalışmamıştım, ama ben __android_log_print, printf biçiminde karakterlerle çalışıyorum. Bu durumda %p'u kullanabilirsiniz.

int a = 10; değişkenimiz olduğunu varsayalım.

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

EDIT: adresini yazdırmak için

Kabul cevap:

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

Yep benziyor, ama Bu işleve geçmeden önce bir adresi dizgeye çevirmeye ihtiyaç duyar. – Phonon

+0

Tamam, belgelere hızlı bir şekilde baktım ve birinin "__android_log_print (SOME_PRIO," sometag ","% p ", &a);' 'gibi bir şey yapabileceğini düşündüm.) – Fred

+0

Bunu nasıl özledim bilmiyorum.) – Phonon

2

Ben Android NDK defalarca çalışmak ve ben kullanılması, doğal LogCat önce çalıştık.

__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 kaynak dosyalarında başlık içerir daha makefile'daki daha

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

__android_log_print` printf` yapar `gibi biçimlendirme var, bu yüzden gelmez`

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

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

include $(BUILD_SHARED_LIBRARY)