ERROR: unable to find numeric literal operator 'operator""U'?

ERROR: unable to find numeric literal operator 'operator""U'?

我在 Vivado 和 SDK 2017.4 上使用 ARM v7 g++ 编译器。我有相同的代码工作没有任何问题,但现在它在更改与此无关的内容后抛出此错误,显然。我已经撤消了更改,但它仍然抱怨。

../../MicroZed_design9_bsp/ps7_cortexa9_0/include/xparameters.h:557:40: error: unable to find numeric literal operator 'operator""U'
#define XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ 1e+08U

这是从哪里来的?

U 在浮点文字的末尾无效。有效的后缀是 fF 表示 floatlL 表示 long double,没有后缀默认为 doubleU 表示 unsigned 只能用在整数文字的末尾。

因此 1e+08U 无效,因为 1e+08 是浮点文字的语法。指数符号不能用于整数。如果你想要一个 unsigned long 整数,写 100000000UL.