调用'min(uint8_t&, int)'没有匹配函数
No matching function for call to 'min(uint8_t&, int)'
我正试图用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
^
为什么没有定义min(uint8_t&, int)
?这不是一个标准的数学函数吗?
我是否正确地假设我在某个地方缺少include或命名空间声明,并且不应该自己定义这个函数?
传递给std::min
的参数不同:一个是uint8_t
,另一个是int
。
std::min
的功能类型如下:
template< class T >
const T& min( const T& a, const T& b );
您需要告诉编译器std::min
的类型参数是什么。
因此,解决方案是:
std::min<int>(fifoCount, 128);
您的错误消息显示全部为
error: no matching function for call to 'min(uint8_t&, int)'
由于参数的类型不一致(匹配),编译器无法解析为正确的专用化。
- 如
std::min(static_cast<int>(fifoCount), 128)
中那样,将uint8_t
参数fifoCount
静态上变频到int
- 或者,明确指定要专门化
std::min<int>(fifoCount, 128)
的类型
相关文章:
- 在函数 'int main(int, char**) 中,没有声明 'MIN'
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 重载函数 int vs double
- 错误 C2084:函数"int main(void)"已具有主体
- 无效使用非静态成员函数 int test::funcAB(int, int)
- 错误:函数"int open(...)"的隐式声明
- 如何在没有参数的情况下实现返回双向链表大小的函数?int size() const.
- 错误:参数太少,无法函数"int Solution(std::vector<int>, int)"
- arr++ 在函数"int f(int arr[])"中是什么意思?
- 带有声明帐户的C 构造函数(int = 0);
- 如何初始化一个在C++中期望向量和变量的构造函数<int>?
- C++,实现函数"int next(std::string param)"时出现奇怪的编译器错误
- 单链表交换函数(int,int)
- 插入 std::map<int, std::vector 的简短函数<int>>
- 函数int get()和istream&get(char&c)有什么区别
- 该函数 int f() 没有警告不返回任何值?
- 没有用于启动"ostream_iterator"的匹配构造函数<int>
- 函数"int __cdecl invoke_main(void)"中引用LNK2019未解析的外部符号_main错误 (?invoke_main@@YAHXZ)
- 函数"int (*function())[10];"是什么意思?
- 非成员函数 'int find(const T&)' 不能有 cv 限定符