Как напечатать / записать адрес переменной в NDK - PullRequest
5 голосов
/ 11 августа 2011

Я не очень силен в C, но сейчас я работаю с NDK, и мне нужна помощь, чтобы записать адрес переменной в шестнадцатеричном формате. Я использовал __android_log_print для печати сообщений общего журнала, но как мне сказать C преобразовать адрес переменной в массив символов?

Ответы [ 2 ]

7 голосов
/ 11 августа 2011

Я никогда не работал с Android NDK, но я предполагаю, что __android_log_print работает с символами формата printf.В этом случае вы можете использовать %p.

Допустим, у нас есть переменная int a = 10;.Чтобы напечатать его адрес:

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

РЕДАКТИРОВАТЬ :

Принятый ответ:

__android_log_print(SOME_PRIO, "sometag", "%p", &a);
2 голосов
/ 06 декабря 2011

Я работаю с 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>

чем makefile выглядит как

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

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

include $(BUILD_SHARED_LIBRARY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...