In SDK 1.5.1 rp2_common/hardware_sync/.../sync.h using GCC 13.2.1 arm-none-eabi on lines 156:165 :I get the following error:
Code:
/*! \brief Insert a DSB instruction in to the code path. * \ingroup hardware_sync * * The DSB (data synchronization barrier) acts as a special kind of data * memory barrier (DMB). The DSB operation completes when all explicit memory * accesses before this instruction complete. */__force_inline static void __dsb(void) { pico_default_asm_volatile("dsb" : : : "memory"); }
Can someone explain the meaning and use of the three colons, ":::", in the above. I have searched for an explanation of this construct in either C or C++ thinking it may be a tri-graph symbol (say for token concatenation) and cannot find any references at all. BTW a similar construct appears on lines 167:175 in defining "__isb(void) but there there are spaces separating the colons.C:/Users/username/.pico-sdk/sdk/1.5.1/src/rp2_common/hardware_sync/include/hardware/sync.h: In function '__dsb':
C:/Users/username/.pico-sdk/sdk/1.5.1/src/rp2_common/hardware_sync/include/hardware/sync.h:164:36: error: expected ')' before ':' token
164 | pico_default_asm_volatile("dsb" : : : "memory");
| ~ ^~
| )
Statistics: Posted by vbhunt — Mon Jun 17, 2024 10:51 pm — Replies 2 — Views 176