返回字节数组或将数组传递到函数中
Return an array of bytes OR passing an array into a function
我试图完成的是在一个函数中返回一个字节数组,以便我可以执行以下操作:
byte array[8] = function();
正在使用我自制的库通过 i2c 总线获取值。这是库:
#ifndef MPULIBRARY_HPP
#define MPULIBRARY_HPP
#include "hwlib.hpp"
namespace mpulibrary{
class mpumanager
{
private:
hwlib::i2c_bus_bit_banged_scl_sda bus;
byte startregister[2] = {0x6B, 0};
byte adress = 0x68;
byte xregister[8] = {0x3B};
byte yregister[8] = {0x3D};
byte zregister[8] = {0x3F};
public:
mpumanager(hwlib::i2c_bus_bit_banged_scl_sda bus):
bus(bus)
{}
void startup(){
bus.write(adress, startregister, 2);
}
byte getXaxis(){
bus.write(adress, xregister, 1);
bus.read(adress, xregister, 2);
return xregister[8];
}
byte getYaxis(){
bus.write(adress, yregister, 1);
bus.read(adress, yregister, 2);
return yregister[8];
}
byte getZaxis(){
bus.write(adress, zregister, 1);
bus.read(adress, zregister, 2);
return zregister[8];
}
};
};
#endif // MPULIBRARY_HPP
我的其他代码:
auto manager = mpulibrary::mpumanager(i2c_bus);
for(;;){
manager.startup();
byte ydata[8] = {};
manager.getYaxis(ydata[8]);
byte zdata[8] = {0x3F};
i2c_bus.write(adress, zdata, 1);
i2c_bus.read(adress, zdata, 2);
int16_t yaxis = 0;
int16_t zaxis = 0;
yaxis = (ydata[0] << 8) + ydata[1];
zaxis = (zdata[0] << 8) + zdata[1];
hwlib::cout << "Y: " << yaxis << " Z:" << zaxis << "n";
hwlib::wait_ms(100);
}
我希望有人能给我一个答案。提前感谢!
字节数组[8] = 函数();
您不能直接使用 C 数组。
你必须把它包装在一个类中(如std::array<byte, 8>
)。
byte xregister[8] = {0x3B}; byte getXaxis(){ bus.write(adress, xregister, 1); bus.read(adress, xregister, 2); return xregister[8]; }
您可以返回对数组的引用:
byte xregister[8] = {0x3B};
using byte_array = byte[8]; // typedef to avoid strange syntax in return type
byte_array& getXaxis(){
bus.write(adress, xregister, 1);
bus.read(adress, xregister, 2);
return xregister;
}
并使用它:
auto& xAxis = manager.getXaxis();
如果可以将function
数组转换为:
template<int N>
void function(byte (&array)[N]) {
}
或者,如果要将大小限制为(例如,8):
void function(byte (&array)[8]) {
}
无法返回原始数组,因为 C 样式的原始数组不可复制。
相关文章:
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 打印 2D 动态数组 c++ 函数
- C++数组函数
- 在数组函数指针中调用void
- 数组函数似乎没有找到最大值
- 使用数组函数和循环求解伪元编码|C
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 数组函数错误输出
- 读取文件,然后创建数组函数C++
- 指针数组函数参数-奇怪的行为
- 二维数组 - 函数
- "return"没有从数组函数返回正确的值
- 数组函数问题
- 数组函数的大小返回 int 的大小而不是数组
- 从数组函数中删除元素
- 如何从C++中最好地调用具有C99风格数组函数签名的函数
- 追加/打印/插入数组c++函数问题
- 如何将数组函数转换为指针函数
- 多维数组函数输出垃圾
- C++:数组函数的递归最大值