Я использую компилятор ARM v7 g ++ на Vivado и SDK 2017.4. У меня был тот же код, работающий без проблем, но теперь он выдает эту ошибку после изменения чего-то, что, по-видимому, не связано с этим. Я отменил изменения, но они все еще жалуются.
../../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
указать float
, l
или же L
указать long double
и без суффикса по умолчанию double
, U
Отображать unsigned
может использоваться только в конце целочисленного литерала.
Так 1e+08U
не действует, потому что 1e+08
это синтаксис для литерала с плавающей точкой. Экспоненциальная запись не может быть использована для целых чисел. Если вы хотите unsigned long
целое число, напишите 100000000UL
,
Других решений пока нет …