'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
Q
NDK
5
A
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);
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)
Yep benziyor, ama Bu işleve geçmeden önce bir adresi dizgeye çevirmeye ihtiyaç duyar. – Phonon
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
Bunu nasıl özledim bilmiyorum.) – Phonon