C++ 错误:找不到数字文字运算符';“操作员”&引用;U';?

C++ 错误:找不到数字文字运算符';“操作员”&引用;U';?,c++,xilinx,vivado,zynq,C++,Xilinx,Vivado,Zynq,我正在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_TIM

我正在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
在浮点文本的末尾无效。有效后缀为
f
f
表示
浮动
l
l
表示
长双精度
,默认情况下没有后缀为
双精度
U
表示
无符号
只能在整数文本的末尾使用


因此
1e+08U
无效,因为
1e+08
是浮点文本的语法。指数表示法不能用于整数。如果您想要一个
无符号长
整数,请写出
100000000 ul

它来自
1e+08U
末尾的
U
。谢谢您的回答。我懂了。问题是,该文件是由软件自动生成的,并且以前编译过。所以我不知道发生了什么。好吧,我找到了一个暂时的解决办法。我不知道这是怎么发生的,因为是Vivado生成了这条线,它与AXI时钟(100MHz)相连<代码>#定义XPAR_AXI_定时器(0时钟)频率(1e+08U)。我已经删除了指数,现在它可以编译了<代码>#定义XPAR_AXI_定时器(0)时钟(0)频率(HZ)10000000U。但是,我不知道为什么以前编译过这些代码。我没有将AXI时钟从以前的版本更改为此版本。感谢@Barmar的回答。