调用'min(uint8_t&,int)'没有匹配函数

Cer*_*rin 1 c++

我正在尝试用gcc 编译一些c ++ i2cdevlib代码,我收到错误:

/usr/share/arduino/libraries/i2cdevlib/Arduino/MPU9150/MPU9150_9Axis_MotionApps41.h: In member function 'uint8_t MPU9150::dmpInitialize()':
/usr/share/arduino/libraries/i2cdevlib/Arduino/MPU9150/MPU9150_9Axis_MotionApps41.h:605:56: error: no matching function for call to 'min(uint8_t&, int)'
             getFIFOBytes(fifoBuffer, min(fifoCount, 128)); // safeguard only 128 bytes
                                                        ^
Run Code Online (Sandbox Code Playgroud)

为什么没有min(uint8_t&, int)定义?这不是标准的数学函数吗?

我是否正确地假设我在某处遗漏了包含或名称空间声明,并且不应该自己定义此函数?

for*_*ack 6

传递给的参数std::min不同:一个是uint8_t,另一个是int.

功能类型std::min如下:

template< class T > 
const T& min( const T& a, const T& b );
Run Code Online (Sandbox Code Playgroud)

你需要告诉编译器什么是类型参数std::min.

所以解决方案是:

std::min<int>(fifoCount, 128);
Run Code Online (Sandbox Code Playgroud)