Hi Johan, On Mon, Oct 19, 2015 at 10:35 PM, Johan Hedberg <johan.hedberg@xxxxxxxxx> wrote: > Hi Jakub, > > On Mon, Oct 19, 2015, Jakub Pawlowski wrote: >> due to type promotions in C this code was failing on some platforms. >> >> src/device.c:2016:8: error: format specifies type 'unsigned short' but the >> argument has type 'uint8_t' (aka 'unsigned char') [-Werror,-Wformat] >> properties, uuid_str); >> ^~~~~~~~~~ >> /build/falco/usr/include/bits/stdio2.h:39:7: note: expanded from macro 'sprintf' >> __VA_ARGS__) >> ^ >> --- >> src/device.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/src/device.c b/src/device.c >> index 0d3a655..b4e6d53 100644 >> --- a/src/device.c >> +++ b/src/device.c >> @@ -2015,7 +2015,7 @@ static void store_chrc(struct gatt_db_attribute *attr, void *user_data) >> >> sprintf(handle, "%04hx", handle_num); >> bt_uuid_to_string(&uuid, uuid_str, sizeof(uuid_str)); >> - sprintf(value, GATT_CHARAC_UUID_STR ":%04hx:%02hx:%s", value_handle, >> + sprintf(value, GATT_CHARAC_UUID_STR ":%04hx:%02x:%s", value_handle, >> properties, uuid_str); > > Wouldn't the right format specifier be %hhx in this case? So it was compiling fine on my machine, but when it was compiling for all possible platforms for ChromeOS those errors came up. The very proper thing would be probably to use "PRIu8" from <inttypes.h> but then I found good explanation: ""printf() is a variadic function. Its optional arguments( and only those ) get promoted according to default argument promotions( 6.5.2.2. p6 ). Since you are asking for integers, integer promotions are applied in this case, and types you mention get promoted to int. ( and not unsigned int because C )"" source: http://stackoverflow.com/questions/26362386/why-is-the-format-specifier-for-uint8-t-and-uint16-t-the-same-u so I understand that this uint8_t will get promoted to int, and displayed properly. I manually tested it for 0, 127, and 255 and looks like it's formatting just fine. Jakub > > Johan -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html