2011-08-11 12 views
5

में एक चर के पते को प्रिंट/लॉग कैसे करें मैं सी में बहुत मजबूत नहीं हूं, लेकिन मैं अभी एनडीके के साथ काम कर रहा हूं और मुझे हेक्स में एक चर के पते को लॉगिंग करने में मदद चाहिए। मैं जेनेरिक लॉग संदेशों को मुद्रित करने के लिए __android_log_print का उपयोग कर रहा हूं, लेकिन मैं चर को एक चर सरणी में बदलने के लिए सी कैसे कहूं?एनडीके

उत्तर

7

मैंने कभी एंड्रॉइड एनडीके के साथ काम नहीं किया, लेकिन मुझे लगता है कि __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); 
+0

हाँ की तरह लग रही है, लेकिन '__android_log_print' तरह' printf' करता स्वरूपण नहीं है, इसलिए मैं वास्तव में इस फ़ंक्शन को पास करने से पहले किसी पते को स्ट्रिंग में कनवर्ट करने की आवश्यकता है। – Phonon

+0

ठीक है, मुझे प्रलेखन पर एक त्वरित रूप से देखा गया और सोचा कि कोई '' __android_log_print (SOME_PRIO, "somag", "% p", &a); '', क्षमा करें। – Fred

+0

कोई विचार नहीं कि मुझे यह कैसे याद आया। धन्यवाद =) – Phonon

2

मैं एंड्रॉयड 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; 

और से ग स्रोत फ़ाइलों में शीर्ष लेख शामिल

#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)