Skip to content

Fix format specifier for printing CAN message ID in CanMsg.h.#198

Merged
aentinger merged 1 commit into
arduino:masterfrom
haydenroche5:mbed_can_msg_fix
Sep 4, 2023
Merged

Fix format specifier for printing CAN message ID in CanMsg.h.#198
aentinger merged 1 commit into
arduino:masterfrom
haydenroche5:mbed_can_msg_fix

Conversation

@haydenroche5

Copy link
Copy Markdown
Contributor

Reproducible with an empty sketch:

// my_example.ino

void setup()
{
}

void loop()
{
}

Compiled with:

arduino-cli compile --build-property compiler.cpp.extra_flags='-Wno-unused-parameter -Werror' --fqbn arduino:mbed_nano:nano33ble --log-level trace --verbose --warnings all my_example/my_example.ino

Tail of the output:

In file included from /home/hroche/.arduino15/packages/arduino/hardware/mbed_nano/4.0.4/cores/arduino/api/CanMsgRingbuffer.h:17:0,
                 from /home/hroche/.arduino15/packages/arduino/hardware/mbed_nano/4.0.4/cores/arduino/api/CanMsgRingbuffer.cpp:12:
/home/hroche/.arduino15/packages/arduino/hardware/mbed_nano/4.0.4/cores/arduino/api/CanMsg.h: In member function 'virtual size_t arduino::CanMsg::printTo(arduino::Print&) const':
/home/hroche/.arduino15/packages/arduino/hardware/mbed_nano/4.0.4/cores/arduino/api/CanMsg.h:71:71: error: format '%X' expects argument of type 'unsigned int', but argument 4 has type 'uint32_t {aka long unsigned int}' [-Werror=format=]
     len = snprintf(buf, sizeof(buf), "[%08X] (%d) : ", id, data_length);
                                                        ~~             ^
cc1plus: all warnings being treated as errors


Used platform     Version Path                                                             
arduino:mbed_nano 4.0.4   /home/hroche/.arduino15/packages/arduino/hardware/mbed_nano/4.0.4
Error during build: exit status

Regarding the X format specifier: C standard §7.21.6.1: "The unsigned int
argument is converted to ..." On some platforms (e.g. mbed_nano), uint32_t,
which is what's being printed here, is an unsigned long int, so this code causes
a compiler warning. The fix is to use the format specifiers from §7.8.1,
specifically PRIX32.

@aentinger aentinger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍 That's a good one, thanks for fixing it @haydenroche5 🚀 .

@aentinger aentinger merged commit 68d3e0d into arduino:master Sep 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants