android ndk开发中初始化char数组报错问题

Android Studio报错:

error: constant expression evaluates to -14 which cannot be narrowed to type 'char' [-Wc++11-narrowing]

错误位置在定义char数组的地方

android ndk开发中初始化char数组报错问题_第1张图片

官方说明

看看cflags中 fsigned-char的说明:

 -fsigned-char — Allows the type char in the native libraries to be signed, like signed char. Each kind of machine has a default for what char should be. It is either like unsigned charby default or like signed char by default. By default on Android NDK char type is unsigned, but char is treated as signed on x86. This is an option imposed by Superpowered SDK authors, so we’ll include this as well.
默认android ndk中char类型是unsigned,在x86上是signed类型,在ndk中,对于负数来说,char val = -3,printf出的值是253,而不是-3。

所以要修改app目下的build.gradle,在android节点下的externalNativeBuild->cmake里的cppFlags添加-fsigned-char选项android ndk开发中初始化char数组报错问题_第2张图片

我这里使用的是CMake,如果使用的是android.mk,则添加:

LOCAL_CFLAGS := -fsigned-char

 

 

你可能感兴趣的:(Android,android)