编译armeabi-v7a时未定义PRIx64格式宏

时间:2017-01-06 17:39:44

标签: android android-ndk printf armv7

要打印uint64_t值,我使用的是PRIx64宏。 这适用于我尝试的所有平台(iOS,Windows,Linux,arm64 Android。)

但是在32位ARM Android上,宏似乎不可用:

编译时:

LOGI("Cannot find %" PRIx64 " in wld.", item);

我明白了:

actors_pathing.cpp:234:25: error: expected ')' LOGI("Cannot find %" PRIx64 " in wld.", item); ^

arm64-v8a工作正常,但armeabi-v7a没有。 当然,32位arm代码应该能够打印出64位整数吗?

使用:NDK r13b(最新)

在Application.mk中: APP_ABI := armeabi-v7a

2 个答案:

答案 0 :(得分:1)

使用PRIx64格式时需要定义宏:

$(document).on('keyup','#search_suggest',function(){ var product_name = $(this).val(); var x = 'image/no_image.png'; $.ajax({ url: 'index.php?route=product/search/search_suggestion', type: 'post', data: {'search': product_name}, dataType: 'json', success: function(response) { // console.log(response); var data = $.parseJSON(JSON.stringify(response)); // console.log(data); $('#products').empty(); $.each(data, function(i, res){ $('#products').append('<option value="'+res['name']+'"><img src="'+x+'"/></option>'); // $('#products').append('<option><img src="'+x+'"/></option>'); }); }, error: function(xhr, ajaxOptions, thrownError) { alert('error'); ; console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); });

答案 1 :(得分:0)

将此行添加到您的Android.mk:

LOCAL_CPPFLAGS := -D__STDC_FORMAT_MACROS